blob: 3c81622ab6ed5944f0f36af4d9be34d58328e2ed [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 */
Agrawal Ashish17ef5082016-10-17 18:33:21 +0530581#ifdef SAP_AUTH_OFFLOAD
582 WDI_ProcessSapAuthOffloadInd, /* WDI_PROCESS_SAP_AUTH_OFFLOAD_IND */
583#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700584};
585
586
Jeff Johnsone7245742012-09-05 17:12:55 -0700587/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700588 DAL Request Processing Array - the functions in this table will only be
589 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700590 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700591 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700592WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700593{
594 /*INIT*/
595 WDI_ProcessStartRsp, /* WDI_START_RESP */
596 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
597 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
598
599 /*SCAN*/
600 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
601 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
602 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
603 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
604
605 /* ASSOCIATION*/
606 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
607 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
608 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
609 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
610 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
611
612 /* Security */
613 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
614 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
615 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
616 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
617
618 /* QoS and BA APIs */
619 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
620 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
621 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
622 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
623 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
624
625 /* Miscellaneous Control APIs */
626 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
627 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
628 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
629 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
630 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
631
632 /* BA APIs*/
633 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
634 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700635
Jeff Johnson295189b2012-06-20 16:38:30 -0700636 /* IBSS APIs*/
637 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
638 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
639
640 /*Soft AP APIs*/
641 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
642 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
643 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
644 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
645
646 /* PowerSave APIs */
647 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
648 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
649 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
650 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
651 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
652 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
653 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
654 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
655 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
656 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
657 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
658 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
659 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
660 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
661 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
662 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
663 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
664 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700665
Jeff Johnson295189b2012-06-20 16:38:30 -0700666
667 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
668
669 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
670 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
671#ifdef WLAN_FEATURE_VOWIFI_11R
672 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
673#else
674 NULL,
675#endif /* WLAN_FEATURE_VOWIFI_11R */
676 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
677 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700678#ifdef FEATURE_OEM_DATA_SUPPORT
679 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
680#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700681 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700682#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700683 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
684
Jeff Johnson295189b2012-06-20 16:38:30 -0700685 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700686
Jeff Johnson295189b2012-06-20 16:38:30 -0700687 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700688
Jeff Johnsone7245742012-09-05 17:12:55 -0700689 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
690
Jeff Johnson295189b2012-06-20 16:38:30 -0700691#ifdef FEATURE_WLAN_SCAN_PNO
692 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
693 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
694 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
695#else
696 NULL,
697 NULL,
698 NULL,
699#endif // FEATURE_WLAN_SCAN_PNO
700
701 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700702 /*---------------------------------------------------------------------
703 Indications
704 ---------------------------------------------------------------------*/
705#ifdef WLAN_FEATURE_PACKET_FILTERING
706 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700707 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700708 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700709 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700710 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700711 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700712 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700713 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700714#else
715 NULL,
716 NULL,
717 NULL,
718 NULL,
719#endif // WLAN_FEATURE_PACKET_FILTERING
720
721 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
722 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
723
724 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800725#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700726 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
727#else
728 NULL,
729#endif
730
731#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700732 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
733 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700734#else
735 NULL,
736 NULL,
737#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700738 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
739 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700740#ifdef WLAN_FEATURE_11AC
741 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700742#else
743 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700744#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800745#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800746 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
747#else
748 NULL,
749#endif
schang86c22c42013-03-13 18:41:24 -0700750 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700751#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700752 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700753#else
754 NULL,
755#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530756#ifdef FEATURE_WLAN_TDLS
757 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
758#else
759 NULL,
760#endif
Leo Chang9056f462013-08-01 19:21:11 -0700761#ifdef FEATURE_WLAN_LPHB
762 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
763#else
764 NULL,
765#endif /* FEATURE_WLAN_LPHB */
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530766#ifdef WLAN_FEATURE_RMC
767 WDI_ProcessRMCRulerResp, /* WDI_RMC_RULER_RESP */
768#else
769 NULL,
770#endif /* WLAN_FEATURE_RMC */
771
772#ifdef WLAN_FEATURE_RMC
773 WDI_ProcessIbssPeerInfoRsp, /* WDI_HAL_GET_IBSS_PEER_INFO_RSP */
774#else
775 NULL,
776#endif /* WLAN_FEATURE_RMC */
Rajeev79dbe4c2013-10-05 11:03:42 +0530777
778#ifdef FEATURE_WLAN_BATCH_SCAN
779 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
780#else
781 NULL,
782#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800783 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530784
c_hpothu92367912014-05-01 15:18:17 +0530785 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800786
c_hpothu92367912014-05-01 15:18:17 +0530787 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
788
789 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800790
Sunil Duttbd736ed2014-05-26 21:19:41 +0530791
792#ifdef WLAN_FEATURE_LINK_LAYER_STATS
793 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
794 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
795 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
796#else
797 NULL,
798 NULL,
799 NULL,
800#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530801#ifdef WLAN_FEATURE_EXTSCAN
802 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
803 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
804 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
805 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
806 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
807 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530808 WDI_ProcessEXTScanSetHotlistSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_SSID_RSP */
809 WDI_ProcessEXTScanResetHotlistSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP */
Dino Mycle41bdc942014-06-10 11:30:24 +0530810#else
811 NULL,
812 NULL,
813 NULL,
814 NULL,
815 NULL,
816 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530817 NULL,
818 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530819#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530820 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530821
822 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530823
824 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530825 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530826 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530827
Srinivas Dasari32a79262015-02-19 13:04:49 +0530828 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
829
Katya Nigamf0511f62015-05-05 16:40:57 +0530830 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
831 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530832 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530833 WDI_ProcessFwrMemDumpRsp, /* WDI_FWR_MEM_DUMP_RSP */
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530834 WDI_ProcessRssiMonitorStartRsp, /* WDI_START_RSSI_MONITOR_RSP*/
835 WDI_ProcessRssiMonitorStopRsp, /* WDI_STOP_RSSI_MONITOR_RSP*/
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530836
837 WDI_ProcessWificonfigSetRsp, /* /WDI_WIFI_CONFIG_SET_RSP*/
Kapil Guptab3a981b2016-06-26 13:36:51 +0530838#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
839 WDI_ProcessPERRoamScanOffloadRsp, /* WDI_PER_ROAM_SCAN_OFFLOAD_RSP */
840 WDI_ProcessPERRoamScanTriggerRsp, /* WDI_PER_ROAM_SCAN_TRIGGER_RSP */
841#else
842 NULL,
843 NULL,
844#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700845 /*---------------------------------------------------------------------
846 Indications
847 ---------------------------------------------------------------------*/
848 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
849 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
850 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
851 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
852 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
853 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
854
855 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
856
857 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
858
Jeff Johnson295189b2012-06-20 16:38:30 -0700859 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700860
861#ifdef FEATURE_WLAN_SCAN_PNO
862 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
863#else
864 NULL,
865#endif // FEATURE_WLAN_SCAN_PNO
866
867#ifdef WLAN_WAKEUP_EVENTS
868 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
869#else // WLAN_WAKEUP_EVENTS
870 NULL,
871#endif // WLAN_WAKEUP_EVENTS
872
873 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800874
Viral Modid86bde22012-12-10 13:09:21 -0800875 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530876#ifdef FEATURE_WLAN_TDLS
877 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
878#else
879 NULL,
880#endif
Leo Chang9056f462013-08-01 19:21:11 -0700881
882#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700883 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700884#else
885 NULL,
886#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700887
888 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700889
890 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530891
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530892#ifdef WLAN_FEATURE_RMC
893 WDI_ProcessRMCUpdateIndToHost, /* WDI_RMC_UPDATE_IND_TO_HOST */
894#else
895 NULL,
896#endif /* WLAN_FEATURE_RMC */
897
Rajeev79dbe4c2013-10-05 11:03:42 +0530898#ifdef FEATURE_WLAN_BATCH_SCAN
899 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
900#else
901 NULL,
902#endif
903
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530904#ifdef WLAN_FEATURE_RMC
905 WDI_ProcessTXFailInd, /*WDI_HAL_TX_FAIL_IND*/
906#else
907 NULL,
908#endif /* WLAN_FEATURE_RMC */
909
Leo Chang0b0e45a2013-12-15 15:18:55 -0800910#ifdef FEATURE_WLAN_CH_AVOID
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530911 WDI_ProcessChAvoidInd, /* WDI_HAL_CH_AVOID_IND */
Leo Chang0b0e45a2013-12-15 15:18:55 -0800912#else
913 NULL,
914#endif /* FEATURE_WLAN_CH_AVOID */
915
Sunil Duttbd736ed2014-05-26 21:19:41 +0530916 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
917#ifdef WLAN_FEATURE_LINK_LAYER_STATS
918 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
919#else
920 NULL,
921#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530922#ifdef WLAN_FEATURE_EXTSCAN
923 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
924 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
925 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
926 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530927 WDI_ProcessEXTScanSsidHotListResultInd, /* WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND */
Dino Mycle41bdc942014-06-10 11:30:24 +0530928#else
929 NULL,
930 NULL,
931 NULL,
932 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530933 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530934#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530935#ifdef FEATURE_WLAN_TDLS
936 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
937#else
938 NULL,
939#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530940 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530941 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530942 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530943 WDI_Process_RssiBreachedInd, /* WDI_HAL_RSSI_BREACHED_IND */
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530944#ifdef FEATURE_OEM_DATA_SUPPORT
945 WDI_ProcessStartOemDataRspIndNew, /* WDI_HAL_START_OEM_DATA_RSP_IND_NEW */
946#else
947 NULL,
948#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530949 WDI_ProcessGetCurrentAntennaIndexRsp, /* WDI_ANTENNA_DIVERSITY_SELECTION_RSP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700950};
951
952
Jeff Johnsone7245742012-09-05 17:12:55 -0700953/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700954 WLAN DAL Global Control Block
955 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700956WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700957static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
958
Jeff Johnsone7245742012-09-05 17:12:55 -0700959const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700960
961/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700962WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700963void* WDI_GET_PAL_CTX( void )
964{
Jeff Johnsone7245742012-09-05 17:12:55 -0700965 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700966}/*WDI_GET_PAL_CTX*/
967
Jeff Johnsone7245742012-09-05 17:12:55 -0700968/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700969 Helper inline converters
970 ============================================================================*/
971/*Convert WDI driver type into HAL driver type*/
972WPT_STATIC WPT_INLINE WDI_Status
973WDI_HAL_2_WDI_STATUS
974(
975 eHalStatus halStatus
976);
977
978/*Convert WDI request type into HAL request type*/
979WPT_STATIC WPT_INLINE tHalHostMsgType
980WDI_2_HAL_REQ_TYPE
981(
982 WDI_RequestEnumType wdiReqType
983);
984
985/*Convert WDI response type into HAL response type*/
986WPT_STATIC WPT_INLINE WDI_ResponseEnumType
987HAL_2_WDI_RSP_TYPE
988(
989 tHalHostMsgType halMsg
990);
991
992/*Convert WDI driver type into HAL driver type*/
993WPT_STATIC WPT_INLINE tDriverType
994WDI_2_HAL_DRV_TYPE
995(
996 WDI_DriverType wdiDriverType
997);
998
999/*Convert WDI stop reason into HAL stop reason*/
1000WPT_STATIC WPT_INLINE tHalStopType
1001WDI_2_HAL_STOP_REASON
1002(
1003 WDI_StopType wdiStopType
1004);
1005
1006/*Convert WDI scan mode type into HAL scan mode type*/
1007WPT_STATIC WPT_INLINE eHalSysMode
1008WDI_2_HAL_SCAN_MODE
1009(
1010 WDI_ScanMode wdiScanMode
1011);
1012
1013/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001014WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -07001015WDI_2_HAL_SEC_CH_OFFSET
1016(
1017 WDI_HTSecondaryChannelOffset wdiSecChOffset
1018);
1019
1020/*Convert WDI BSS type into HAL BSS type*/
1021WPT_STATIC WPT_INLINE tSirBssType
1022WDI_2_HAL_BSS_TYPE
1023(
1024 WDI_BssType wdiBSSType
1025);
1026
1027/*Convert WDI NW type into HAL NW type*/
1028WPT_STATIC WPT_INLINE tSirNwType
1029WDI_2_HAL_NW_TYPE
1030(
1031 WDI_NwType wdiNWType
1032);
1033
1034/*Convert WDI chanel bonding type into HAL cb type*/
1035WPT_STATIC WPT_INLINE ePhyChanBondState
1036WDI_2_HAL_CB_STATE
1037(
1038 WDI_PhyChanBondState wdiCbState
1039);
1040
1041/*Convert WDI chanel bonding type into HAL cb type*/
1042WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
1043WDI_2_HAL_HT_OPER_MODE
1044(
1045 WDI_HTOperatingMode wdiHTOperMode
1046);
1047
1048/*Convert WDI mimo PS type into HAL mimo PS type*/
1049WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
1050WDI_2_HAL_MIMO_PS
1051(
1052 WDI_HTMIMOPowerSaveState wdiHTOperMode
1053);
1054
1055/*Convert WDI ENC type into HAL ENC type*/
1056WPT_STATIC WPT_INLINE tAniEdType
1057WDI_2_HAL_ENC_TYPE
1058(
1059 WDI_EncryptType wdiEncType
1060);
1061
1062/*Convert WDI WEP type into HAL WEP type*/
1063WPT_STATIC WPT_INLINE tAniWepType
1064WDI_2_HAL_WEP_TYPE
1065(
1066 WDI_WepType wdiWEPType
1067);
1068
1069/*Convert WDI Link State into HAL Link State*/
1070WPT_STATIC WPT_INLINE tSirLinkState
1071WDI_2_HAL_LINK_STATE
1072(
1073 WDI_LinkStateType wdiLinkState
1074);
1075
Jeff Johnsone7245742012-09-05 17:12:55 -07001076/*Translate a STA Context from WDI into HAL*/
1077WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -07001078void
1079WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -07001080(
Jeff Johnson295189b2012-06-20 16:38:30 -07001081 tConfigStaParams* phalConfigSta,
1082 WDI_ConfigStaReqInfoType* pwdiConfigSta
1083);
Jeff Johnsone7245742012-09-05 17:12:55 -07001084
1085/*Translate a Rate set info from WDI into HAL*/
1086WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -07001087WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -07001088(
Jeff Johnson295189b2012-06-20 16:38:30 -07001089 tSirMacRateSet* pHalRateSet,
1090 WDI_RateSet* pwdiRateSet
1091);
1092
1093/*Translate an EDCA Parameter Record from WDI into HAL*/
1094WPT_STATIC WPT_INLINE void
1095WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -07001096(
Jeff Johnson295189b2012-06-20 16:38:30 -07001097 tSirMacEdcaParamRecord* phalEdcaParam,
1098 WDI_EdcaParamRecord* pWDIEdcaParam
1099);
1100
1101/*Copy a management frame header from WDI fmt into HAL fmt*/
1102WPT_STATIC WPT_INLINE void
1103WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
1104(
1105 tSirMacMgmtHdr* pmacMgmtHdr,
1106 WDI_MacMgmtHdr* pwdiMacMgmtHdr
1107);
1108
1109/*Copy config bss parameters from WDI fmt into HAL fmt*/
1110WPT_STATIC WPT_INLINE void
1111WDI_CopyWDIConfigBSSToHALConfigBSS
1112(
1113 tConfigBssParams* phalConfigBSS,
1114 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1115);
1116
Jeff Johnsone7245742012-09-05 17:12:55 -07001117/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001118 pointed to by user data */
1119WPT_STATIC WPT_INLINE void
1120WDI_ExtractRequestCBFromEvent
1121(
1122 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001123 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001124 void** ppUserData
1125);
1126
1127wpt_uint8
1128WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001129(
Jeff Johnson295189b2012-06-20 16:38:30 -07001130 WDI_ControlBlockType* pWDICtx,
1131 WDI_BSSSessionType** ppSession
1132);
1133
1134void
1135WDI_AddBcastSTAtoSTATable
1136(
1137 WDI_ControlBlockType* pWDICtx,
1138 WDI_AddStaParams * staParams,
1139 wpt_uint16 usBcastStaIdx
1140);
1141
1142WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001143(
Jeff Johnson295189b2012-06-20 16:38:30 -07001144 WDI_ControlBlockType* pWDICtx,
1145 WDI_EventInfoType* pEventData
1146);
1147
1148void
1149WDI_SetPowerStateCb
1150(
1151 wpt_status status,
1152 unsigned int dxePhyAddr,
1153 void *pContext
1154);
1155
Jeff Johnson295189b2012-06-20 16:38:30 -07001156/**
1157 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001158
1159 @param wdiReqMsgId: WDI Message request Id
1160
1161 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001162 @return Result of the function call
1163*/
1164static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1165{
1166 switch (wdiReqMsgId)
1167 {
1168 CASE_RETURN_STRING( WDI_START_REQ );
1169 CASE_RETURN_STRING( WDI_STOP_REQ );
1170 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1171 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1172 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1173 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1174 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1175 CASE_RETURN_STRING( WDI_JOIN_REQ );
1176 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1177 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1178 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1179 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1180 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1181 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1182 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1183 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1184 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1185 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1186 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1187 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1188 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1189 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001190 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001191 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1192 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1193 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1194 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1195 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1196 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1197 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1198 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1199 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1200 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1201 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1202 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001203 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301205#ifdef FEATURE_WLAN_TDLS
1206 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301207 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301208#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001209 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1210 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1211 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1212 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1213 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1214 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1215 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1216 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1217 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1218 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1219 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1220 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1221 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1222 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1223 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1224 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1225 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1226 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1227 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1228 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1229 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1230 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1231 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1232 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1233 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001234 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001235 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1236 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1237 #ifdef FEATURE_WLAN_SCAN_PNO
1238 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1239 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1240 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1241 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001242#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001243 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001244#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001245 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1246 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1247 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1248 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1249 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1250 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1251 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1252 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1253 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301254 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001255 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001256 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001257#ifdef WLAN_FEATURE_11W
1258 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1259#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301260#ifdef FEATURE_WLAN_BATCH_SCAN
1261 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1262 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1263 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1264#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +05301265#ifdef WLAN_FEATURE_RMC
1266 CASE_RETURN_STRING( WDI_TX_FAIL_MONITOR_IND );
1267#endif /* WLAN_FEATURE_RMC */
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301268 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1269 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001270 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301271#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1272 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1273 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1274 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1275#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301276#ifdef WLAN_FEATURE_EXTSCAN
1277 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1278 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1279 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1280 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1281 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1282 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301283 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SSID_HOTLIST_REQ);
1284 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ);
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +05301285 CASE_RETURN_STRING( WDI_HIGH_PRIORITY_DATA_INFO_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301286#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301287 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301288 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301289 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301290 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301291 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301292 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301293 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301294 CASE_RETURN_STRING( WDI_MON_START_REQ );
1295 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301296 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301297 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
c_manjeecfd1efb2015-09-25 19:32:34 +05301298 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_REQ);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301299 CASE_RETURN_STRING( WDI_START_RSSI_MONITOR_REQ );
1300 CASE_RETURN_STRING( WDI_STOP_RSSI_MONITOR_REQ );
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301301 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ_IND_NEW );
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301302 CASE_RETURN_STRING( WDI_ANTENNA_DIVERSITY_SELECTION_REQ );
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +05301303 CASE_RETURN_STRING( WDI_MODIFY_ROAM_PARAMS_IND );
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +05301304 CASE_RETURN_STRING( WDI_SET_ALLOWED_ACTION_FRAMES_IND );
Agrawal Ashish17ef5082016-10-17 18:33:21 +05301305#ifdef SAP_AUTH_OFFLOAD
1306 CASE_RETURN_STRING( WDI_PROCESS_SAP_AUTH_OFFLOAD_IND);
1307#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001308 default:
1309 return "Unknown WDI MessageId";
1310 }
1311}
1312
1313
1314
1315/**
1316 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001317
1318 @param wdiRespMsgId: WDI Message response Id
1319
1320 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001321 @return Result of the function call
1322*/
1323static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1324{
1325 switch (wdiRespMsgId)
1326 {
1327 CASE_RETURN_STRING( WDI_START_RESP );
1328 CASE_RETURN_STRING( WDI_STOP_RESP );
1329 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1330 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1331 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1332 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1333 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1334 CASE_RETURN_STRING( WDI_JOIN_RESP );
1335 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1336 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1337 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1338 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1339 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1340 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1341 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1342 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1343 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1344 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1345 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1346 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1347 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1348 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1349 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1350 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1351 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1352 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1353 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1354 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1355 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1356 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1357 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1358 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1359 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1360 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1361 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301362#ifdef FEATURE_WLAN_TDLS
1363 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301364 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301365 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1366#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001367 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1368 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1369 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1370 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1371 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1372 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1373 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1374 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1375 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1376 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1377 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1378 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1379 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1380 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1381 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1382 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1383 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1384 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1385 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1386 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1387 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1388 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1389 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1390 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1391 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001392 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001393 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1394 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1395 #ifdef FEATURE_WLAN_SCAN_PNO
1396 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1397 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1398 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1399 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001400#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001401 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001402#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001403 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1404 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1405 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1406 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1407 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1408 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1409 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1410 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001411 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Abhishek Singh7cd040e2016-01-07 10:51:04 +05301412#ifdef WLAN_FEATURE_RMC
1413 CASE_RETURN_STRING( WDI_RMC_RULER_RESP );
1414 CASE_RETURN_STRING( WDI_RMC_UPDATE_IND_TO_HOST );
1415
1416 CASE_RETURN_STRING( WDI_HAL_IBSS_PEER_INFO_RSP );
1417#endif /* WLAN_FEATURE_RMC */
Rajeev79dbe4c2013-10-05 11:03:42 +05301418#ifdef FEATURE_WLAN_BATCH_SCAN
1419 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1420#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001421 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301422 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301423 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301424#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1425 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1426 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1427 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1428#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301429#ifdef WLAN_FEATURE_EXTSCAN
1430 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1431 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1432 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1433 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1434 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1435 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301436 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
1437 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301438 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1439 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1440 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1441 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301442 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301443#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301444 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301445 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301446 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301447 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301448 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
c_manjeecfd1efb2015-09-25 19:32:34 +05301449 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_RSP);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301450 CASE_RETURN_STRING (WDI_START_RSSI_MONITOR_RSP);
1451 CASE_RETURN_STRING (WDI_STOP_RSSI_MONITOR_RSP);
Arun Khandavalli7eeb1592015-10-19 21:36:57 +05301452 CASE_RETURN_STRING( WDI_WIFI_CONFIG_SET_RSP);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301453#ifdef FEATURE_OEM_DATA_SUPPORT
1454 CASE_RETURN_STRING (WDI_HAL_START_OEM_DATA_RSP_IND_NEW);
1455#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301456 CASE_RETURN_STRING (WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
Kapil Guptab3a981b2016-06-26 13:36:51 +05301457#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
1458 CASE_RETURN_STRING (WDI_PER_ROAM_SCAN_OFFLOAD_RSP);
1459 CASE_RETURN_STRING (WDI_PER_ROAM_SCAN_TRIGGER_RSP);
1460#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 default:
1462 return "Unknown WDI MessageId";
1463 }
1464}
1465
1466/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301467 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1468 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301469 @param capabilityBitmap - Base address of a 4 element Bitmap array
1470 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301471 @see
1472 @returns None
1473 */
1474void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1475{
Abhishek Singh08b60122014-02-04 18:05:23 +05301476 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301477 char *pTempCapStr = NULL;
1478 char *pCapStr = NULL;
1479 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1480 if (NULL == pTempCapStr)
1481 {
1482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1483 "Memory allocation failed for CapStr");
1484 return;
1485 }
1486
1487 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301488 for (j = 0; j < 4; j++) {
1489 for (i = 0; i < 32; i++) {
1490 if ((*(capabilityBitmap + j) & (1 << i))) {
1491 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301492 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1493 pCapStr += strlen("MCC");
1494 break;
1495 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1496 pCapStr += strlen("P2P");
1497 break;
1498 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1499 pCapStr += strlen("DOT11AC");
1500 break;
1501 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1502 pCapStr += strlen("SLM_SESSIONIZATION");
1503 break;
1504 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1505 pCapStr += strlen("DOT11AC_OPMODE");
1506 break;
1507 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1508 pCapStr += strlen("SAP32STA");
1509 break;
1510 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1511 pCapStr += strlen("TDLS");
1512 break;
1513 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1514 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1515 break;
1516 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1517 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1518 break;
1519 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1520 pCapStr += strlen("BEACON_OFFLOAD");
1521 break;
1522 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1523 pCapStr += strlen("SCAN_OFFLOAD");
1524 break;
1525 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1526 pCapStr += strlen("ROAM_OFFLOAD");
1527 break;
1528 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1529 pCapStr += strlen("BCN_MISS_OFFLOAD");
1530 break;
1531 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1532 pCapStr += strlen("STA_POWERSAVE");
1533 break;
1534 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1535 pCapStr += strlen("AP_UAPSD");
1536 break;
1537 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1538 pCapStr += strlen("AP_DFS");
1539 break;
1540 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1541 pCapStr += strlen("BLOCKACK");
1542 break;
1543 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1544 pCapStr += strlen("PHY_ERR");
1545 break;
1546 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1547 pCapStr += strlen("BCN_FILTER");
1548 break;
1549 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1550 pCapStr += strlen("RTT");
1551 break;
1552 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1553 pCapStr += strlen("RATECTRL");
1554 break;
1555 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1556 pCapStr += strlen("WOW");
1557 break;
1558 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1559 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1560 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301561 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1562 pCapStr += strlen("FW_IN_TX_PATH");
1563 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301564 case HT40_OBSS_SCAN:
1565 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1566 "%s", "HT40_OBSS_SCAN");
1567 pCapStr += strlen("HT40_OBSS_SCAN");
1568 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301569 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1570 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1571 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1572 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1573 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301574 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1575 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1576 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301577 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1578 pCapStr += strlen("CH_SWITCH_V1");
1579 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301580#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1581 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1582 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1583 break;
1584#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301585#ifdef WLAN_FEATURE_EXTSCAN
1586 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1587 pCapStr += strlen("EXTENDED_SCAN");
1588 break;
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +05301589 case EXT_SCAN_ENHANCED: snprintf(pCapStr, sizeof("EXT_SCAN_ENHANCED"), "%s", "EXT_SCAN_ENHANCED");
1590 pCapStr += strlen("EXT_SCAN_ENHANCED");
1591 break;
Dino Myclee8843b32014-07-04 14:21:45 +05301592#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301593 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1594 pCapStr += strlen("MU_MIMO");
1595 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301596
Mihir Shetec34258c2014-07-30 17:50:27 +05301597 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1598 pCapStr += strlen("DYNAMIC_WMM_PS");
1599 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301600 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1601 pCapStr += strlen("FW_STATS");
1602 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301603 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1604 pCapStr += strlen("MAC_SPOOFED_SCAN");
1605 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301606 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1607 pCapStr += strlen("WPS_PRBRSP_TMPL");
1608 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301609 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1610 pCapStr += strlen("BCN_IE_FLT_DELTA");
1611 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301612 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1613 pCapStr += strlen("MGMT_FRAME_LOGGING");
1614 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301615 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1616 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1617 break;
1618
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301619 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1620 pCapStr += strlen("DISA");
1621 break;
1622
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301623 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1624 pCapStr += strlen("TDLS_OFF_CHANNEL");
1625 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301626 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1627 pCapStr += strlen("LOGGING_ENHANCEMENT");
1628 break;
c_manjeecfd1efb2015-09-25 19:32:34 +05301629 case MEMORY_DUMP_SUPPORTED:snprintf(pCapStr, sizeof("FW_MEM_DUMP_LOGGING"), "%s", "FW_MEM_DUMP_LOGGING");
1630 pCapStr += strlen("FW_MEM_DUMP_LOGGING");
1631 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301632 case PER_PKT_STATS_SUPPORTED: snprintf(pCapStr, sizeof("PER_PKT_STATS_SUPPORTED"), "%s", "PER_PKT_STATS_SUPPORTED");
1633 pCapStr += strlen("PER_PKT_STATS_SUPPORTED");
1634 break;
Mukul Sharmaf1bd9322015-10-20 16:03:42 +05301635 case EXT_LL_STAT: snprintf(pCapStr, sizeof("EXT_LL_STAT"), "%s", "EXT_LL_STAT");
1636 pCapStr += strlen("EXT_LL_STAT");
1637 break;
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +05301638 case RTT3: snprintf(pCapStr, sizeof("RTT3"), "%s", "RTT3");
1639 pCapStr += strlen("RTT3");
1640 break;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301641 case ANTENNA_DIVERSITY_SELECTION:
1642 snprintf(pCapStr,
1643 sizeof("ANTENNA_DIVERSITY_SELECTION"), "%s",
1644 "ANTENNA_DIVERSITY_SELECTION");
1645 pCapStr += strlen("ANTENNA_DIVERSITY_SELECTION");
1646 break;
Kapil Guptab3a981b2016-06-26 13:36:51 +05301647 case PER_BASED_ROAMING:
1648 snprintf(pCapStr, sizeof("PER_BASED_ROAMING"),
1649 "%s", "PER_BASED_ROAMING");
1650 pCapStr += strlen("PER_BASED_ROAMING");
1651 break;
Anurag Chouhan1deaa252016-12-05 15:48:47 +05301652 case SAP_MODE_WOW:
1653 snprintf(pCapStr, sizeof("SAP_MODE_WOW"),
1654 "%s", "SAP_MODE_WOW");
1655 pCapStr += strlen("SAP_MODE_WOW");
1656 break;
1657 case SAP_OFFLOADS:
1658 snprintf(pCapStr, sizeof("SAP_OFFLOADS"),
1659 "%s", "SAP_OFFLOADS");
1660 pCapStr += strlen("SAP_OFFLOADS");
1661 break;
Abhishek Singh08b60122014-02-04 18:05:23 +05301662 }
1663 *pCapStr++ = ',';
1664 *pCapStr++ = ' ';
1665 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301666 }
1667 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301668 pCapStr -= 2;
1669 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301671 if (pTempCapStr)
1672 {
1673 vos_mem_free(pTempCapStr);
1674 pTempCapStr = NULL;
1675 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301676}
1677
1678/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001679 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001680
1681 @param halStatusId: HAL status Id
1682
1683 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 @return Result of the function call
1685*/
1686static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1687{
1688 switch (halStatusId)
1689 {
1690 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1691 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1692 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1693 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1694 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1695 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1696 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1697 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1698 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1699 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1700 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1701 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1702 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1703 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1704 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1705 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1706 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1707 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1708 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1709 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1710 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1711 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1712 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1713 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1714 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1715 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1716 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1717 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1718 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1719 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1720 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1721 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1722 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1723 default:
1724 return "Unknown HAL status";
1725 }
1726}
1727
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301728/**
1729 * wdi_state_info_dump() - prints state information of wdi layer
1730 */
1731static void wdi_state_info_dump(void)
1732{
1733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1734 "%s pending commands: %d", __func__,
1735 gWDICb.wptPendingQueue.count);
1736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1737 "uGlobalState %d wdiExpectedResponse: %d",
1738 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
1739}
1740
1741
1742/**
1743 * wdi_register_debug_callback() - registration function for wdi layer
1744 * to print WDI state information
1745 */
1746static void wdi_register_debug_callback(void)
1747{
1748 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
1749}
1750
1751
Jeff Johnsone7245742012-09-05 17:12:55 -07001752/*========================================================================
1753
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001755
Jeff Johnson295189b2012-06-20 16:38:30 -07001756==========================================================================*/
1757
1758/**
1759 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001760
Jeff Johnson295189b2012-06-20 16:38:30 -07001761 DAL will allocate all the resources it needs. It will open PAL, it will also
1762 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001763 DXE/SMD or any other drivers that they need.
1764
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301765 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 ppWDIGlobalCtx: output pointer of Global Context
1767 pWdiDevCapability: output pointer of device capability
1768
1769 @return Result of the function call
1770*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001772WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001773(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301774 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 void** ppWDIGlobalCtx,
1776 WDI_DeviceCapabilityType* pWdiDevCapability,
1777 unsigned int driverType
1778)
1779{
1780 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001781 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001782 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001783 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1785
1786 /*---------------------------------------------------------------------
1787 Sanity check
1788 ---------------------------------------------------------------------*/
1789 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1790 {
1791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1792 "Invalid input parameters in WDI_Init");
1793
Jeff Johnsone7245742012-09-05 17:12:55 -07001794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001795 }
1796
1797 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001798 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001799 ---------------------------------------------------------------------*/
1800 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1801 {
1802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1803 "WDI module already initialized - return");
1804
Jeff Johnsone7245742012-09-05 17:12:55 -07001805 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001806 }
1807
1808 /*Module is now initialized - this flag is to ensure the fact that multiple
1809 init will not happen on WDI
1810 !! - potential race does exist because read and set are not atomic,
1811 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001812 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001813
1814 /*Setup the control block */
1815 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301816 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001817
1818 /*Setup the STA Table*/
1819 wdiStatus = WDI_STATableInit(&gWDICb);
1820 if ( WDI_STATUS_SUCCESS != wdiStatus )
1821 {
1822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1823 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001824 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001825 goto fail_STATableInit;
1826 }
1827
1828 /*------------------------------------------------------------------------
1829 Open the PAL
1830 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301831 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001832 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1833 {
1834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1835 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001836 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001837 goto fail_wpalOpen;
1838 }
1839
1840 /*Initialize main synchro mutex - it will be used to ensure integrity of
1841 the main WDI Control Block*/
1842 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1843 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1844 {
1845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1846 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001847 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001848 goto fail_mutex;
1849 }
1850
1851 /*Initialize the response timer - it will be used to time all messages
1852 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001853 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1854 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001855 &gWDICb);
1856 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1857 {
1858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1859 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001860 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001861 goto fail_timer;
1862 }
1863
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001864 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1865 WDI_SsrTimerCB,
1866 &gWDICb);
1867 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1868 {
1869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1870 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001871 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001872 goto fail_timer2;
1873 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001874 /* Initialize the WDI Pending Request Queue*/
1875 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1876 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1877 {
1878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1879 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001880 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001881 goto fail_pend_queue;
1882 }
1883
1884 /*Init WDI Pending Assoc Id Queue */
1885 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1886 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1887 {
1888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1889 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001890 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 goto fail_assoc_queue;
1892 }
1893
1894 /*Initialize the BSS sessions pending Queue */
1895 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1896 {
1897 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1898 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1899 {
1900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1901 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001902 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001903 goto fail_bss_queue;
1904 }
1905 }
1906
1907 /*Indicate the control block is sufficiently initialized for callbacks*/
1908 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1909
1910 /*------------------------------------------------------------------------
1911 Initialize the Data Path Utility Module
1912 ------------------------------------------------------------------------*/
1913 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1914 if ( WDI_STATUS_SUCCESS != wdiStatus )
1915 {
1916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1917 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001918 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001919 goto fail_dp_util_init;
1920 }
1921
1922 /* Init Set power state event */
1923 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001924 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001925 {
1926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1927 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001928 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001929 goto fail_power_event;
1930 }
1931
1932 /* Init WCTS action event */
1933 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001934 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001935 {
1936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1937 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001938 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001939 goto fail_wcts_event;
1940 }
1941
1942 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001943 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001944 ------------------------------------------------------------------------*/
1945 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1946 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 wctsCBs.wctsRxMsgCBData = &gWDICb;
1949
Jeff Johnsone7245742012-09-05 17:12:55 -07001950 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001951 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001952 WDI_CT_CHANNEL_SIZE,
1953 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001954
1955 if ( NULL == gWDICb.wctsHandle )
1956 {
1957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001958 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 goto fail_wcts_open;
1960 }
1961
1962 gWDICb.driverMode = (tDriverType)driverType;
1963 /* FTM mode not need to open Transport Driver */
1964 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001966 /*------------------------------------------------------------------------
1967 Open the Data Transport
1968 ------------------------------------------------------------------------*/
1969 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1970 {
1971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001972 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001973 goto fail_wdts_open;
1974 }
1975 }
1976
1977 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001978 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301979 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001980 /*Send the context as a ptr to the global WDI Control Block*/
1981 *ppWDIGlobalCtx = &gWDICb;
1982
1983 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001984 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001985 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1986 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301987
1988 wdi_register_debug_callback();
1989
Jeff Johnson295189b2012-06-20 16:38:30 -07001990 return WDI_STATUS_SUCCESS;
1991
1992 /* ERROR handlers
1993 Undo everything that completed successfully */
1994
1995 fail_wdts_open:
1996 {
1997 wpt_status eventStatus;
1998
1999 /* Closing WCTS in this scenario is tricky since it has to close
2000 the SMD channel and then we get notified asynchronously when
2001 the channel has been closed. So we take some of the logic from
2002 the "normal" close procedure in WDI_Close()
2003 */
2004
2005 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002006 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002007 {
2008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002009 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 }
2011
2012 WCTS_CloseTransport(gWDICb.wctsHandle);
2013
2014 /* Wait for WCTS to close the control transport. If we were able
2015 to reset the event flag, then we'll wait for the event,
2016 otherwise we'll wait for a maximum amount of time required for
2017 the channel to be closed */
2018 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2019 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002020 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002021 WDI_WCTS_ACTION_TIMEOUT);
2022 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2023 {
2024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002025 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002026 }
2027 }
2028 else
2029 {
2030 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
2031 }
2032 }
2033 fail_wcts_open:
2034 wpalEventDelete(&gWDICb.wctsActionEvent);
2035 fail_wcts_event:
2036 wpalEventDelete(&gWDICb.setPowerStateEvent);
2037 fail_power_event:
2038 WDI_DP_UtilsExit(&gWDICb);
2039 fail_dp_util_init:
2040 gWDICb.magic = 0;
2041 fail_bss_queue:
2042 /* entries 0 thru i-1 were successfully initialized */
2043 while (0 < i)
2044 {
2045 i--;
2046 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2047 }
2048 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2049 fail_assoc_queue:
2050 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2051 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002052 wpalTimerDelete(&gWDICb.ssrTimer);
2053 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 wpalTimerDelete(&gWDICb.wptResponseTimer);
2055 fail_timer:
2056 wpalMutexDelete(&gWDICb.wptMutex);
2057 fail_mutex:
2058 wpalClose(gWDICb.pPALContext);
2059 fail_wpalOpen:
2060 WDI_STATableClose(&gWDICb);
2061 fail_STATableInit:
2062 gWDIInitialized = eWLAN_PAL_FALSE;
2063
2064 return WDI_STATUS_E_FAILURE;
2065
2066}/*WDI_Init*/;
2067
2068/**
2069 @brief WDI_Start will be called when the upper MAC is ready to
2070 commence operation with the WLAN Device. Upon the call
2071 of this API the WLAN DAL will pack and send a HAL Start
2072 message to the lower RIVA sub-system if the SMD channel
2073 has been fully opened and the RIVA subsystem is up.
2074
2075 If the RIVA sub-system is not yet up and running DAL
2076 will queue the request for Open and will wait for the
2077 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07002078 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07002079
2080 WDI_Init must have been called.
2081
Jeff Johnsone7245742012-09-05 17:12:55 -07002082 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002083 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002084
Jeff Johnson295189b2012-06-20 16:38:30 -07002085 wdiStartRspCb: callback for passing back the response of
2086 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002087
Jeff Johnson295189b2012-06-20 16:38:30 -07002088 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002089 callback
2090
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 @see WDI_Start
2092 @return Result of the function call
2093*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002094WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002095WDI_Start
2096(
2097 WDI_StartReqParamsType* pwdiStartParams,
2098 WDI_StartRspCb wdiStartRspCb,
2099 void* pUserData
2100)
2101{
2102 WDI_EventInfoType wdiEventData;
2103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2104
2105 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002106 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002107 ------------------------------------------------------------------------*/
2108 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2109 {
2110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2111 "WDI API call before module is initialized - Fail request");
2112
Jeff Johnsone7245742012-09-05 17:12:55 -07002113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 }
2115
2116 /*------------------------------------------------------------------------
2117 Fill in Event data and post to the Main FSM
2118 ------------------------------------------------------------------------*/
2119 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002120 wdiEventData.pEventData = pwdiStartParams;
2121 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
2122 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 wdiEventData.pUserData = pUserData;
2124
2125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2126
2127}/*WDI_Start*/
2128
2129/**
2130 @brief WDI_Stop will be called when the upper MAC is ready to
2131 stop any operation with the WLAN Device. Upon the call
2132 of this API the WLAN DAL will pack and send a HAL Stop
2133 message to the lower RIVA sub-system if the DAL Core is
2134 in started state.
2135
2136 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07002137
2138 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002139
2140 WDI_Start must have been called.
2141
Jeff Johnsone7245742012-09-05 17:12:55 -07002142 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002143 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002144
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 wdiStopRspCb: callback for passing back the response of
2146 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002147
Jeff Johnson295189b2012-06-20 16:38:30 -07002148 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002149 callback
2150
Jeff Johnson295189b2012-06-20 16:38:30 -07002151 @see WDI_Start
2152 @return Result of the function call
2153*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002154WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002155WDI_Stop
2156(
2157 WDI_StopReqParamsType* pwdiStopParams,
2158 WDI_StopRspCb wdiStopRspCb,
2159 void* pUserData
2160)
2161{
2162 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002163 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2165
2166 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002167 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002168 ------------------------------------------------------------------------*/
2169 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2170 {
2171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2172 "WDI API call before module is initialized - Fail request");
2173
Jeff Johnsone7245742012-09-05 17:12:55 -07002174 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002175 }
2176
Jeff Johnson43971f52012-07-17 12:26:56 -07002177 /*Access to the global state must be locked before cleaning */
2178 wpalMutexAcquire(&pWDICtx->wptMutex);
2179
2180 /*Clear all pending request*/
2181 WDI_ClearPendingRequests(pWDICtx);
2182
2183 /*We have completed cleaning unlock now*/
2184 wpalMutexRelease(&pWDICtx->wptMutex);
2185
Jeff Johnson295189b2012-06-20 16:38:30 -07002186 /* Free the global variables */
2187 wpalMemoryFree(gpHostWlanFeatCaps);
2188 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002189 gpHostWlanFeatCaps = NULL;
2190 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002191
2192 /*------------------------------------------------------------------------
2193 Fill in Event data and post to the Main FSM
2194 ------------------------------------------------------------------------*/
2195 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002196 wdiEventData.pEventData = pwdiStopParams;
2197 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2198 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002199 wdiEventData.pUserData = pUserData;
2200
2201 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2202
2203}/*WDI_Stop*/
2204
2205
2206
2207/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002208 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002209 needs to interact with DAL. DAL will free its control
2210 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002211
2212 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002213
2214 WDI_Stop must have been called.
2215
2216 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002217
Jeff Johnson295189b2012-06-20 16:38:30 -07002218 @see WDI_Stop
2219 @return Result of the function call
2220*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002221WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002222WDI_Close
2223(
2224 void
2225)
2226{
2227 wpt_uint8 i;
2228 WDI_EventInfoType wdiEventData;
2229 wpt_status wptStatus;
2230 wpt_status eventStatus;
2231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2232
2233 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002234 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002235 ------------------------------------------------------------------------*/
2236 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2237 {
2238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2239 "WDI API call before module is initialized - Fail request");
2240
Jeff Johnsone7245742012-09-05 17:12:55 -07002241 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 }
2243
2244 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2245 (the control transport will be closed by the FSM and we'll want
2246 to wait until that completes)*/
2247 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002248 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002249 {
2250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002251 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002252 /* fall through and try to finish closing via the FSM */
2253 }
2254
2255 /*------------------------------------------------------------------------
2256 Fill in Event data and post to the Main FSM
2257 ------------------------------------------------------------------------*/
2258 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002259 wdiEventData.pEventData = NULL;
2260 wdiEventData.uEventDataSize = 0;
2261 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002262 wdiEventData.pUserData = NULL;
2263
2264 gWDIInitialized = eWLAN_PAL_FALSE;
2265
2266 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2267
2268 /*Wait for WCTS to close the control transport
2269 (but only if we were able to reset the event flag*/
2270 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2271 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002272 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002273 WDI_WCTS_ACTION_TIMEOUT);
2274 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2275 {
2276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002277 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002278 }
2279 }
2280
2281 /* Destroy the WCTS action event */
2282 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2283 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2284 {
2285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2286 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002287 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002288 }
2289
2290 /* Destroy the Set Power State event */
2291 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2292 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2293 {
2294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2295 "WDI Close failed to destroy an event");
2296
Jeff Johnsone7245742012-09-05 17:12:55 -07002297 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002298 }
2299
2300 /*------------------------------------------------------------------------
2301 Closes the Data Path Utility Module
2302 ------------------------------------------------------------------------*/
2303 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2304 {
2305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2306 "WDI Init failed to close the DP Util Module");
2307
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 }
2310
2311 /*destroy the BSS sessions pending Queue */
2312 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2313 {
2314 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2315 }
2316
2317 /* destroy the WDI Pending Assoc Id Request Queue*/
2318 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2319
2320 /* destroy the WDI Pending Request Queue*/
2321 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002322
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 /*destroy the response timer */
2324 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2325
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002326 /*destroy the SSR timer */
2327 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2328
Jeff Johnson295189b2012-06-20 16:38:30 -07002329 /*invalidate the main synchro mutex */
2330 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2331 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2332 {
2333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2334 "Failed to delete mutex %d", wptStatus);
2335 WDI_ASSERT(0);
2336 }
2337
2338 /*Clear control block. note that this will clear the "magic"
2339 which will inhibit all asynchronous callbacks*/
2340 WDI_CleanCB(&gWDICb);
2341
2342 return wptStatus;
2343
2344}/*WDI_Close*/
2345
2346/**
2347 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2348 This will do most of the WDI stop & close
2349 operations without doing any handshake with Riva
2350
2351 This will also make sure that the control transport
2352 will NOT be closed.
2353
2354 This request will not be queued.
2355
2356
2357 WDI_Start must have been called.
2358
2359 @param closeTransport: Close control channel if this is set
2360
2361 @return Result of the function call
2362*/
2363WDI_Status
2364WDI_Shutdown
2365(
2366 wpt_boolean closeTransport
2367)
2368{
2369 WDI_EventInfoType wdiEventData;
2370 wpt_status wptStatus;
2371 int i = 0;
2372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2373
2374 /*------------------------------------------------------------------------
2375 Sanity Check
2376 ------------------------------------------------------------------------*/
2377 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2378 {
2379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2380 "WDI API call before module is initialized - Fail request");
2381
2382 return WDI_STATUS_E_NOT_ALLOWED;
2383 }
2384
2385 /*------------------------------------------------------------------------
2386 Fill in Event data and post to the Main FSM
2387 ------------------------------------------------------------------------*/
2388 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2389 wdiEventData.pEventData = NULL;
2390 wdiEventData.uEventDataSize = 0;
2391
2392 /* Shutdown will not be queued, if the state is busy timer will be
2393 * stopped & this message will be processed.*/
2394 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2395 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2396 {
2397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002398 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002399 }
2400 /* Destroy the Set Power State event */
2401 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2402 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2403 {
2404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2405 "WDI Close failed to destroy an event");
2406
2407 WDI_ASSERT(0);
2408 }
2409 /*------------------------------------------------------------------------
2410 Closes the Data Path Utility Module
2411 ------------------------------------------------------------------------*/
2412 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2413 {
2414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2415 "WDI Init failed to close the DP Util Module");
2416
2417 WDI_ASSERT(0);
2418 }
2419 if ( closeTransport )
2420 {
2421 /* Close control transport, called from module unload */
2422 WCTS_CloseTransport(gWDICb.wctsHandle);
2423 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002424 else
2425 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002426 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002427 the pending messages in the transport queue */
2428 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2429 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 /*destroy the BSS sessions pending Queue */
2431 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2432 {
2433 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2434 }
2435
2436 /* destroy the WDI Pending Assoc Id Request Queue*/
2437 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2438 /* destroy the WDI Pending Request Queue*/
2439 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2440 /*destroy the response timer */
2441 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002442 /*destroy the SSR timer */
2443 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002444
2445 /*invalidate the main synchro mutex */
2446 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2447 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2448 {
2449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002450 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 WDI_ASSERT(0);
2452 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002453 /* Free the global variables */
2454 wpalMemoryFree(gpHostWlanFeatCaps);
2455 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002456 gpHostWlanFeatCaps = NULL;
2457 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 /*Clear control block. note that this will clear the "magic"
2459 which will inhibit all asynchronous callbacks*/
2460 WDI_CleanCB(&gWDICb);
2461 return wptStatus;
2462
2463}/*WDI_Shutdown*/
2464
2465
Jeff Johnsone7245742012-09-05 17:12:55 -07002466/*========================================================================
2467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002469
Jeff Johnson295189b2012-06-20 16:38:30 -07002470==========================================================================*/
2471
2472/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002474 the WLAN Device to get ready for a scan procedure. Upon
2475 the call of this API the WLAN DAL will pack and send a
2476 HAL Init Scan request message to the lower RIVA
2477 sub-system if DAL is in state STARTED.
2478
2479 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002481
2482 WDI_Start must have been called.
2483
2484 @param wdiInitScanParams: the init scan parameters as specified
2485 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 wdiInitScanRspCb: callback for passing back the response
2488 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002489
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002491 callback
2492
Jeff Johnson295189b2012-06-20 16:38:30 -07002493 @see WDI_Start
2494 @return Result of the function call
2495*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002497WDI_InitScanReq
2498(
2499 WDI_InitScanReqParamsType* pwdiInitScanParams,
2500 WDI_InitScanRspCb wdiInitScanRspCb,
2501 void* pUserData
2502)
2503{
2504 WDI_EventInfoType wdiEventData;
2505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2506
2507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002509 ------------------------------------------------------------------------*/
2510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2511 {
2512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2513 "WDI API call before module is initialized - Fail request");
2514
Jeff Johnsone7245742012-09-05 17:12:55 -07002515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 }
2517
2518 /*------------------------------------------------------------------------
2519 Fill in Event data and post to the Main FSM
2520 ------------------------------------------------------------------------*/
2521 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002522 wdiEventData.pEventData = pwdiInitScanParams;
2523 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2524 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 wdiEventData.pUserData = pUserData;
2526
2527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2528
2529}/*WDI_InitScanReq*/
2530
2531/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 wishes to change the Scan channel on the WLAN Device.
2534 Upon the call of this API the WLAN DAL will pack and
2535 send a HAL Start Scan request message to the lower RIVA
2536 sub-system if DAL is in state STARTED.
2537
2538 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002540
2541 WDI_InitScanReq must have been called.
2542
Jeff Johnsone7245742012-09-05 17:12:55 -07002543 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002545
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 wdiStartScanRspCb: callback for passing back the
2547 response of the start scan operation received from the
2548 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002549
Jeff Johnson295189b2012-06-20 16:38:30 -07002550 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002551 callback
2552
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 @see WDI_InitScanReq
2554 @return Result of the function call
2555*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002556WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002557WDI_StartScanReq
2558(
2559 WDI_StartScanReqParamsType* pwdiStartScanParams,
2560 WDI_StartScanRspCb wdiStartScanRspCb,
2561 void* pUserData
2562)
2563{
2564 WDI_EventInfoType wdiEventData;
2565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2566
2567 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002568 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002569 ------------------------------------------------------------------------*/
2570 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2571 {
2572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2573 "WDI API call before module is initialized - Fail request");
2574
Jeff Johnsone7245742012-09-05 17:12:55 -07002575 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002576 }
2577
2578 /*------------------------------------------------------------------------
2579 Fill in Event data and post to the Main FSM
2580 ------------------------------------------------------------------------*/
2581 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002582 wdiEventData.pEventData = pwdiStartScanParams;
2583 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2584 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002585 wdiEventData.pUserData = pUserData;
2586
2587 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2588
2589}/*WDI_StartScanReq*/
2590
2591
2592/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002593 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 wants to end scanning for a particular channel that it
2595 had set before by calling Scan Start on the WLAN Device.
2596 Upon the call of this API the WLAN DAL will pack and
2597 send a HAL End Scan request message to the lower RIVA
2598 sub-system if DAL is in state STARTED.
2599
2600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002602
2603 WDI_StartScanReq must have been called.
2604
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002607
Jeff Johnson295189b2012-06-20 16:38:30 -07002608 wdiEndScanRspCb: callback for passing back the response
2609 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002610
Jeff Johnson295189b2012-06-20 16:38:30 -07002611 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 callback
2613
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 @see WDI_StartScanReq
2615 @return Result of the function call
2616*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002618WDI_EndScanReq
2619(
2620 WDI_EndScanReqParamsType* pwdiEndScanParams,
2621 WDI_EndScanRspCb wdiEndScanRspCb,
2622 void* pUserData
2623)
2624{
2625 WDI_EventInfoType wdiEventData;
2626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2627
2628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 ------------------------------------------------------------------------*/
2631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2632 {
2633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2634 "WDI API call before module is initialized - Fail request");
2635
Jeff Johnsone7245742012-09-05 17:12:55 -07002636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002637 }
2638
2639 /*------------------------------------------------------------------------
2640 Fill in Event data and post to the Main FSM
2641 ------------------------------------------------------------------------*/
2642 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002643 wdiEventData.pEventData = pwdiEndScanParams;
2644 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2645 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002646 wdiEventData.pUserData = pUserData;
2647
2648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2649
2650}/*WDI_EndScanReq*/
2651
2652
2653/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002654 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 completed the scan process on the WLAN Device. Upon the
2656 call of this API the WLAN DAL will pack and send a HAL
2657 Finish Scan Request request message to the lower RIVA
2658 sub-system if DAL is in state STARTED.
2659
2660 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002661 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002662
2663 WDI_InitScanReq must have been called.
2664
Jeff Johnsone7245742012-09-05 17:12:55 -07002665 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002667
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 wdiFinishScanRspCb: callback for passing back the
2669 response of the finish scan operation received from the
2670 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002671
Jeff Johnson295189b2012-06-20 16:38:30 -07002672 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002673 callback
2674
Jeff Johnson295189b2012-06-20 16:38:30 -07002675 @see WDI_InitScanReq
2676 @return Result of the function call
2677*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002678WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002679WDI_FinishScanReq
2680(
2681 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2682 WDI_FinishScanRspCb wdiFinishScanRspCb,
2683 void* pUserData
2684)
2685{
2686 WDI_EventInfoType wdiEventData;
2687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2688
2689 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002690 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002691 ------------------------------------------------------------------------*/
2692 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2693 {
2694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2695 "WDI API call before module is initialized - Fail request");
2696
Jeff Johnsone7245742012-09-05 17:12:55 -07002697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002698 }
2699
2700 /*------------------------------------------------------------------------
2701 Fill in Event data and post to the Main FSM
2702 ------------------------------------------------------------------------*/
2703 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002704 wdiEventData.pEventData = pwdiFinishScanParams;
2705 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2706 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002707 wdiEventData.pUserData = pUserData;
2708
2709 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2710
2711}/*WDI_FinishScanReq*/
2712
Jeff Johnsone7245742012-09-05 17:12:55 -07002713/*========================================================================
2714
Jeff Johnson295189b2012-06-20 16:38:30 -07002715 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002716
Jeff Johnson295189b2012-06-20 16:38:30 -07002717==========================================================================*/
2718
2719/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002720 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 to start an association procedure to a BSS. Upon the
2722 call of this API the WLAN DAL will pack and send a HAL
2723 Join request message to the lower RIVA sub-system if
2724 DAL is in state STARTED.
2725
2726 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002727 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002728
2729 WDI_Start must have been called.
2730
Jeff Johnsone7245742012-09-05 17:12:55 -07002731 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002733
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 wdiJoinRspCb: callback for passing back the response of
2735 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002736
Jeff Johnson295189b2012-06-20 16:38:30 -07002737 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002738 callback
2739
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 @see WDI_Start
2741 @return Result of the function call
2742*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002743WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002744WDI_JoinReq
2745(
2746 WDI_JoinReqParamsType* pwdiJoinParams,
2747 WDI_JoinRspCb wdiJoinRspCb,
2748 void* pUserData
2749)
2750{
2751 WDI_EventInfoType wdiEventData;
2752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2753
2754 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002755 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002756 ------------------------------------------------------------------------*/
2757 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2758 {
2759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2760 "WDI API call before module is initialized - Fail request");
2761
Jeff Johnsone7245742012-09-05 17:12:55 -07002762 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002763 }
2764
2765 /*------------------------------------------------------------------------
2766 Fill in Event data and post to the Main FSM
2767 ------------------------------------------------------------------------*/
2768 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002769 wdiEventData.pEventData = pwdiJoinParams;
2770 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2771 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002772 wdiEventData.pUserData = pUserData;
2773
2774 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2775
2776}/*WDI_JoinReq*/
2777
2778/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002779 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 wishes to configure the newly acquired or in process of
2781 being acquired BSS to the HW . Upon the call of this API
2782 the WLAN DAL will pack and send a HAL Config BSS request
2783 message to the lower RIVA sub-system if DAL is in state
2784 STARTED.
2785
2786 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002787 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002788
2789 WDI_JoinReq must have been called.
2790
Jeff Johnsone7245742012-09-05 17:12:55 -07002791 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002792 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002793
Jeff Johnson295189b2012-06-20 16:38:30 -07002794 wdiConfigBSSRspCb: callback for passing back the
2795 response of the config BSS operation received from the
2796 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002797
Jeff Johnson295189b2012-06-20 16:38:30 -07002798 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002799 callback
2800
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 @see WDI_JoinReq
2802 @return Result of the function call
2803*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002804WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002805WDI_ConfigBSSReq
2806(
2807 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2808 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2809 void* pUserData
2810)
2811{
2812 WDI_EventInfoType wdiEventData;
2813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2814
2815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002816 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002817 ------------------------------------------------------------------------*/
2818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2819 {
2820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2821 "WDI API call before module is initialized - Fail request");
2822
Jeff Johnsone7245742012-09-05 17:12:55 -07002823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002824 }
2825
2826 /*------------------------------------------------------------------------
2827 Fill in Event data and post to the Main FSM
2828 ------------------------------------------------------------------------*/
2829 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002830 wdiEventData.pEventData = pwdiConfigBSSParams;
2831 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2832 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002833 wdiEventData.pUserData = pUserData;
2834
2835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2836
2837}/*WDI_ConfigBSSReq*/
2838
2839/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002840 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 disassociating from the BSS and wishes to notify HW.
2842 Upon the call of this API the WLAN DAL will pack and
2843 send a HAL Del BSS request message to the lower RIVA
2844 sub-system if DAL is in state STARTED.
2845
2846 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002847 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002848
2849 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2850
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002852 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002853
Jeff Johnson295189b2012-06-20 16:38:30 -07002854 wdiDelBSSRspCb: callback for passing back the response
2855 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002856
Jeff Johnson295189b2012-06-20 16:38:30 -07002857 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 callback
2859
2860 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002861 @return Result of the function call
2862*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002863WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002864WDI_DelBSSReq
2865(
2866 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2867 WDI_DelBSSRspCb wdiDelBSSRspCb,
2868 void* pUserData
2869)
2870{
2871 WDI_EventInfoType wdiEventData;
2872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2873
2874 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002876 ------------------------------------------------------------------------*/
2877 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2878 {
2879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2880 "WDI API call before module is initialized - Fail request");
2881
Jeff Johnsone7245742012-09-05 17:12:55 -07002882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002883 }
2884
2885 /*------------------------------------------------------------------------
2886 Fill in Event data and post to the Main FSM
2887 ------------------------------------------------------------------------*/
2888 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002889 wdiEventData.pEventData = pwdiDelBSSParams;
2890 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2891 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 wdiEventData.pUserData = pUserData;
2893
2894 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2895
2896}/*WDI_DelBSSReq*/
2897
2898/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002899 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002900 associated to a BSS and wishes to configure HW for
2901 associated state. Upon the call of this API the WLAN DAL
2902 will pack and send a HAL Post Assoc request message to
2903 the lower RIVA sub-system if DAL is in state STARTED.
2904
2905 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002906 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002907
2908 WDI_JoinReq must have been called.
2909
2910 @param wdiPostAssocReqParams: the assoc parameters as specified
2911 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002912
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 wdiPostAssocRspCb: callback for passing back the
2914 response of the post assoc operation received from the
2915 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002916
Jeff Johnson295189b2012-06-20 16:38:30 -07002917 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002918 callback
2919
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 @see WDI_JoinReq
2921 @return Result of the function call
2922*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002923WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002924WDI_PostAssocReq
2925(
2926 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2927 WDI_PostAssocRspCb wdiPostAssocRspCb,
2928 void* pUserData
2929)
2930{
2931 WDI_EventInfoType wdiEventData;
2932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2933
2934 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002935 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002936 ------------------------------------------------------------------------*/
2937 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2938 {
2939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2940 "WDI API call before module is initialized - Fail request");
2941
Jeff Johnsone7245742012-09-05 17:12:55 -07002942 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002943 }
2944
2945 /*------------------------------------------------------------------------
2946 Fill in Event data and post to the Main FSM
2947 ------------------------------------------------------------------------*/
2948 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002949 wdiEventData.pEventData = pwdiPostAssocReqParams;
2950 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2951 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002952 wdiEventData.pUserData = pUserData;
2953
2954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2955
2956}/*WDI_PostAssocReq*/
2957
2958/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002959 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002960 association with another STA has ended and the station
2961 must be deleted from HW. Upon the call of this API the
2962 WLAN DAL will pack and send a HAL Del STA request
2963 message to the lower RIVA sub-system if DAL is in state
2964 STARTED.
2965
2966 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002967 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002968
2969 WDI_PostAssocReq must have been called.
2970
Jeff Johnsone7245742012-09-05 17:12:55 -07002971 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002972 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002973
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 wdiDelSTARspCb: callback for passing back the response
2975 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002976
Jeff Johnson295189b2012-06-20 16:38:30 -07002977 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002978 callback
2979
Jeff Johnson295189b2012-06-20 16:38:30 -07002980 @see WDI_PostAssocReq
2981 @return Result of the function call
2982*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002983WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002984WDI_DelSTAReq
2985(
2986 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2987 WDI_DelSTARspCb wdiDelSTARspCb,
2988 void* pUserData
2989)
2990{
2991 WDI_EventInfoType wdiEventData;
2992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2993
2994 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002995 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 ------------------------------------------------------------------------*/
2997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2998 {
2999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3000 "WDI API call before module is initialized - Fail request");
3001
Jeff Johnsone7245742012-09-05 17:12:55 -07003002 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003003 }
3004
3005 /*------------------------------------------------------------------------
3006 Fill in Event data and post to the Main FSM
3007 ------------------------------------------------------------------------*/
3008 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003009 wdiEventData.pEventData = pwdiDelSTAParams;
3010 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
3011 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003012 wdiEventData.pUserData = pUserData;
3013
3014 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3015
3016}/*WDI_DelSTAReq*/
3017
Jeff Johnsone7245742012-09-05 17:12:55 -07003018/*========================================================================
3019
Jeff Johnson295189b2012-06-20 16:38:30 -07003020 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003021
Jeff Johnson295189b2012-06-20 16:38:30 -07003022==========================================================================*/
3023
3024/**
3025 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
3026 install a BSS encryption key on the HW. Upon the call of this
3027 API the WLAN DAL will pack and send a Set BSS Key request
3028 message to the lower RIVA sub-system if DAL is in state
3029 STARTED.
3030
3031 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003032 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003033
3034 WDI_PostAssocReq must have been called.
3035
Jeff Johnsone7245742012-09-05 17:12:55 -07003036 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003037 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003038
Jeff Johnson295189b2012-06-20 16:38:30 -07003039 wdiSetBSSKeyRspCb: callback for passing back the
3040 response of the set BSS Key operation received from the
3041 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003042
Jeff Johnson295189b2012-06-20 16:38:30 -07003043 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003044 callback
3045
Jeff Johnson295189b2012-06-20 16:38:30 -07003046 @see WDI_PostAssocReq
3047 @return Result of the function call
3048*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003049WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003050WDI_SetBSSKeyReq
3051(
3052 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
3053 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
3054 void* pUserData
3055)
3056{
3057 WDI_EventInfoType wdiEventData;
3058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3059
3060 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003062 ------------------------------------------------------------------------*/
3063 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3064 {
3065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3066 "WDI API call before module is initialized - Fail request");
3067
Jeff Johnsone7245742012-09-05 17:12:55 -07003068 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 }
3070
3071 /*------------------------------------------------------------------------
3072 Fill in Event data and post to the Main FSM
3073 ------------------------------------------------------------------------*/
3074 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 wdiEventData.pEventData = pwdiSetBSSKeyParams;
3076 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
3077 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003078 wdiEventData.pUserData = pUserData;
3079
3080 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3081
3082}/*WDI_SetBSSKeyReq*/
3083
3084/**
3085 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
3086 uninstall a BSS key from HW. Upon the call of this API the
3087 WLAN DAL will pack and send a HAL Remove BSS Key request
3088 message to the lower RIVA sub-system if DAL is in state
3089 STARTED.
3090
3091 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003092 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003093
3094 WDI_SetBSSKeyReq must have been called.
3095
Jeff Johnsone7245742012-09-05 17:12:55 -07003096 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003097 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003098
Jeff Johnson295189b2012-06-20 16:38:30 -07003099 wdiRemoveBSSKeyRspCb: callback for passing back the
3100 response of the remove BSS key operation received from
3101 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003102
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003104 callback
3105
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 @see WDI_SetBSSKeyReq
3107 @return Result of the function call
3108*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003109WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003110WDI_RemoveBSSKeyReq
3111(
3112 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
3113 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
3114 void* pUserData
3115)
3116{
3117 WDI_EventInfoType wdiEventData;
3118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3119
3120 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003121 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003122 ------------------------------------------------------------------------*/
3123 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3124 {
3125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3126 "WDI API call before module is initialized - Fail request");
3127
Jeff Johnsone7245742012-09-05 17:12:55 -07003128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 }
3130
3131 /*------------------------------------------------------------------------
3132 Fill in Event data and post to the Main FSM
3133 ------------------------------------------------------------------------*/
3134 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003135 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
3136 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
3137 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003138 wdiEventData.pUserData = pUserData;
3139
3140 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3141
3142}/*WDI_RemoveBSSKeyReq*/
3143
3144
3145/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003146 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003147 ready to install a STA(ast) encryption key in HW. Upon
3148 the call of this API the WLAN DAL will pack and send a
3149 HAL Set STA Key request message to the lower RIVA
3150 sub-system if DAL is in state STARTED.
3151
3152 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003153 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003154
3155 WDI_PostAssocReq must have been called.
3156
Jeff Johnsone7245742012-09-05 17:12:55 -07003157 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003158 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003159
Jeff Johnson295189b2012-06-20 16:38:30 -07003160 wdiSetSTAKeyRspCb: callback for passing back the
3161 response of the set STA key operation received from the
3162 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003163
Jeff Johnson295189b2012-06-20 16:38:30 -07003164 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003165 callback
3166
Jeff Johnson295189b2012-06-20 16:38:30 -07003167 @see WDI_PostAssocReq
3168 @return Result of the function call
3169*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003170WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003171WDI_SetSTAKeyReq
3172(
3173 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3174 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3175 void* pUserData
3176)
3177{
3178 WDI_EventInfoType wdiEventData;
3179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3180
3181 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003182 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003183 ------------------------------------------------------------------------*/
3184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3185 {
3186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3187 "WDI API call before module is initialized - Fail request");
3188
Jeff Johnsone7245742012-09-05 17:12:55 -07003189 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 }
3191
3192 /*------------------------------------------------------------------------
3193 Fill in Event data and post to the Main FSM
3194 ------------------------------------------------------------------------*/
3195 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003196 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3197 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3198 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003199 wdiEventData.pUserData = pUserData;
3200
3201 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3202
3203}/*WDI_SetSTAKeyReq*/
3204
3205
3206/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003207 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003208 wants to uninstall a previously set STA key in HW. Upon
3209 the call of this API the WLAN DAL will pack and send a
3210 HAL Remove STA Key request message to the lower RIVA
3211 sub-system if DAL is in state STARTED.
3212
3213 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003214 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003215
3216 WDI_SetSTAKeyReq must have been called.
3217
Jeff Johnsone7245742012-09-05 17:12:55 -07003218 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003219 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003220
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 wdiRemoveSTAKeyRspCb: callback for passing back the
3222 response of the remove STA key operation received from
3223 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003224
Jeff Johnson295189b2012-06-20 16:38:30 -07003225 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003226 callback
3227
Jeff Johnson295189b2012-06-20 16:38:30 -07003228 @see WDI_SetSTAKeyReq
3229 @return Result of the function call
3230*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003231WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003232WDI_RemoveSTAKeyReq
3233(
3234 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3235 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3236 void* pUserData
3237)
3238{
3239 WDI_EventInfoType wdiEventData;
3240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3241
3242 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003243 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 ------------------------------------------------------------------------*/
3245 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3246 {
3247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3248 "WDI API call before module is initialized - Fail request");
3249
Jeff Johnsone7245742012-09-05 17:12:55 -07003250 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 }
3252
3253 /*------------------------------------------------------------------------
3254 Fill in Event data and post to the Main FSM
3255 ------------------------------------------------------------------------*/
3256 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003257 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3258 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3259 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003260 wdiEventData.pUserData = pUserData;
3261
3262 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3263
3264}/*WDI_RemoveSTAKeyReq*/
3265
3266
3267/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003268 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003269 wants to install a STA Bcast encryption key on the HW.
3270 Upon the call of this API the WLAN DAL will pack and
3271 send a HAL Start request message to the lower RIVA
3272 sub-system if DAL is in state STARTED.
3273
3274 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003275 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003276
3277 WDI_PostAssocReq must have been called.
3278
Jeff Johnsone7245742012-09-05 17:12:55 -07003279 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003280 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003281
Jeff Johnson295189b2012-06-20 16:38:30 -07003282 wdiSetSTABcastKeyRspCb: callback for passing back the
3283 response of the set BSS Key operation received from the
3284 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003285
Jeff Johnson295189b2012-06-20 16:38:30 -07003286 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003287 callback
3288
Jeff Johnson295189b2012-06-20 16:38:30 -07003289 @see WDI_PostAssocReq
3290 @return Result of the function call
3291*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003292WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003293WDI_SetSTABcastKeyReq
3294(
3295 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3296 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3297 void* pUserData
3298)
3299
3300{
3301 WDI_EventInfoType wdiEventData;
3302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3303
3304 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003305 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 ------------------------------------------------------------------------*/
3307 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3308 {
3309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3310 "WDI API call before module is initialized - Fail request");
3311
Jeff Johnsone7245742012-09-05 17:12:55 -07003312 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003313 }
3314
3315 /*------------------------------------------------------------------------
3316 Fill in Event data and post to the Main FSM
3317 ------------------------------------------------------------------------*/
3318 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003319 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3320 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3321 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003322 wdiEventData.pUserData = pUserData;
3323
3324 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3325
3326}/*WDI_SetSTABcastKeyReq*/
3327
3328/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003329 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003330 MAC wants to uninstall a STA Bcast key from HW. Upon the
3331 call of this API the WLAN DAL will pack and send a HAL
3332 Remove STA Bcast Key request message to the lower RIVA
3333 sub-system if DAL is in state STARTED.
3334
3335 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003336 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003337
3338 WDI_SetSTABcastKeyReq must have been called.
3339
Jeff Johnsone7245742012-09-05 17:12:55 -07003340 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003341 parameters as specified by the Device
3342 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003343
Jeff Johnson295189b2012-06-20 16:38:30 -07003344 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3345 response of the remove STA Bcast key operation received
3346 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003347
Jeff Johnson295189b2012-06-20 16:38:30 -07003348 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 callback
3350
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 @see WDI_SetSTABcastKeyReq
3352 @return Result of the function call
3353*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003354WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003355WDI_RemoveSTABcastKeyReq
3356(
3357 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3358 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3359 void* pUserData
3360)
3361{
3362 WDI_EventInfoType wdiEventData;
3363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3364
3365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003366 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 ------------------------------------------------------------------------*/
3368 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3369 {
3370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3371 "WDI API call before module is initialized - Fail request");
3372
Jeff Johnsone7245742012-09-05 17:12:55 -07003373 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003374 }
3375
3376 /*------------------------------------------------------------------------
3377 Fill in Event data and post to the Main FSM
3378 ------------------------------------------------------------------------*/
3379 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003380 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3381 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3382 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003383 wdiEventData.pUserData = pUserData;
3384
3385 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3386
3387}/*WDI_RemoveSTABcastKeyReq*/
3388
3389/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003390 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003391 MAC wants to set Max Tx Power to HW. Upon the
3392 call of this API the WLAN DAL will pack and send a HAL
3393 Remove STA Bcast Key request message to the lower RIVA
3394 sub-system if DAL is in state STARTED.
3395
3396 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003397 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003398
3399 WDI_SetSTABcastKeyReq must have been called.
3400
Jeff Johnsone7245742012-09-05 17:12:55 -07003401 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003402 parameters as specified by the Device
3403 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003404
Jeff Johnson295189b2012-06-20 16:38:30 -07003405 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3406 response of the remove STA Bcast key operation received
3407 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003408
Jeff Johnson295189b2012-06-20 16:38:30 -07003409 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 callback
3411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 @see WDI_SetMaxTxPowerReq
3413 @return Result of the function call
3414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003416WDI_SetMaxTxPowerReq
3417(
3418 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3419 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3420 void* pUserData
3421)
3422{
3423 WDI_EventInfoType wdiEventData;
3424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3425
3426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 ------------------------------------------------------------------------*/
3429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3430 {
3431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3432 "WDI API call before module is initialized - Fail request");
3433
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 }
3436
3437 /*------------------------------------------------------------------------
3438 Fill in Event data and post to the Main FSM
3439 ------------------------------------------------------------------------*/
3440 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3442 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3443 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 wdiEventData.pUserData = pUserData;
3445
3446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3447}
3448
schang86c22c42013-03-13 18:41:24 -07003449/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003450 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3451 MAC wants to set Max Tx Power to HW for specific band.
3452
3453 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3454
3455 wdiReqStatusCb: callback for passing back the
3456 response msg from the device
3457
3458 pUserData: user data will be passed back with the
3459 callback
3460
3461 @see WDI_SetMaxTxPowerPerBandReq
3462 @return Result of the function call
3463*/
3464WDI_Status
3465WDI_SetMaxTxPowerPerBandReq
3466(
3467 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3468 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3469 void* pUserData
3470)
3471{
3472 WDI_EventInfoType wdiEventData;
3473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3474
3475 /*------------------------------------------------------------------------
3476 Sanity Check
3477 ------------------------------------------------------------------------*/
3478 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3479 {
3480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3481 "WDI API call before module is initialized - Fail request");
3482
3483 return WDI_STATUS_E_NOT_ALLOWED;
3484 }
3485
3486 /*------------------------------------------------------------------------
3487 Fill in Event data and post to the Main FSM
3488 ------------------------------------------------------------------------*/
3489 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3490 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3491 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3492 wdiEventData.pCBfnc = wdiReqStatusCb;
3493 wdiEventData.pUserData = pUserData;
3494
3495 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3496}
3497
3498/**
schang86c22c42013-03-13 18:41:24 -07003499 @brief WDI_SetTxPowerReq will be called when the upper
3500 MAC wants to set Tx Power to HW.
3501 In state BUSY this request will be queued. Request won't
3502 be allowed in any other state.
3503
3504
3505 @param pwdiSetTxPowerParams: set TS Power parameters
3506 BSSID and target TX Power with dbm included
3507
3508 wdiReqStatusCb: callback for passing back the response
3509
3510 pUserData: user data will be passed back with the
3511 callback
3512
3513 @return Result of the function call
3514*/
3515WDI_Status
3516WDI_SetTxPowerReq
3517(
3518 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3519 WDA_SetTxPowerRspCb wdiReqStatusCb,
3520 void* pUserData
3521)
3522{
3523 WDI_EventInfoType wdiEventData;
3524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3525
3526 /*------------------------------------------------------------------------
3527 Sanity Check
3528 ------------------------------------------------------------------------*/
3529 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3530 {
3531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3532 "WDI API call before module is initialized - Fail request");
3533
3534 return WDI_STATUS_E_NOT_ALLOWED;
3535 }
3536
3537 /*------------------------------------------------------------------------
3538 Fill in Event data and post to the Main FSM
3539 ------------------------------------------------------------------------*/
3540 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3541 wdiEventData.pEventData = pwdiSetTxPowerParams;
3542 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3543 wdiEventData.pCBfnc = wdiReqStatusCb;
3544 wdiEventData.pUserData = pUserData;
3545
3546 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3547}
3548
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003549#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003550WDI_Status
3551WDI_TSMStatsReq
3552(
3553 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3554 WDI_TsmRspCb wdiReqStatusCb,
3555 void* pUserData
3556)
3557{
3558 WDI_EventInfoType wdiEventData;
3559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003560 /*------------------------------------------------------------------------
3561 Sanity Check
3562 ------------------------------------------------------------------------*/
3563 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3564 {
3565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3566 "WDI API call before module is initialized - Fail request");
3567
3568 return WDI_STATUS_E_NOT_ALLOWED;
3569 }
3570
3571 /*------------------------------------------------------------------------
3572 Fill in Event data and post to the Main FSM
3573 ------------------------------------------------------------------------*/
3574 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3575 wdiEventData.pEventData = pwdiTsmReqParams;
3576 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3577 wdiEventData.pCBfnc = wdiReqStatusCb;
3578 wdiEventData.pUserData = pUserData;
3579
3580 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3581
3582}
3583#endif
3584
3585/*========================================================================
3586
3587 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589==========================================================================*/
3590
3591/**
3592 @brief WDI_AddTSReq will be called when the upper MAC to inform
3593 the device of a successful add TSpec negotiation. HW
3594 needs to receive the TSpec Info from the UMAC in order
3595 to configure properly the QoS data traffic. Upon the
3596 call of this API the WLAN DAL will pack and send a HAL
3597 Add TS request message to the lower RIVA sub-system if
3598 DAL is in state STARTED.
3599
3600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003602
3603 WDI_PostAssocReq must have been called.
3604
3605 @param wdiAddTsReqParams: the add TS parameters as specified by
3606 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003607
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 wdiAddTsRspCb: callback for passing back the response of
3609 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003610
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003612 callback
3613
Jeff Johnson295189b2012-06-20 16:38:30 -07003614 @see WDI_PostAssocReq
3615 @return Result of the function call
3616*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003618WDI_AddTSReq
3619(
3620 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3621 WDI_AddTsRspCb wdiAddTsRspCb,
3622 void* pUserData
3623)
3624{
3625 WDI_EventInfoType wdiEventData;
3626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3627
3628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 ------------------------------------------------------------------------*/
3631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3632 {
3633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3634 "WDI API call before module is initialized - Fail request");
3635
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 }
3638
3639 /*------------------------------------------------------------------------
3640 Fill in Event data and post to the Main FSM
3641 ------------------------------------------------------------------------*/
3642 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 wdiEventData.pEventData = pwdiAddTsReqParams;
3644 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3645 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003646 wdiEventData.pUserData = pUserData;
3647
3648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3649
3650}/*WDI_AddTSReq*/
3651
3652
3653
3654/**
3655 @brief WDI_DelTSReq will be called when the upper MAC has ended
3656 admission on a specific AC. This is to inform HW that
3657 QoS traffic parameters must be rest. Upon the call of
3658 this API the WLAN DAL will pack and send a HAL Del TS
3659 request message to the lower RIVA sub-system if DAL is
3660 in state STARTED.
3661
3662 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003663 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003664
3665 WDI_AddTSReq must have been called.
3666
3667 @param wdiDelTsReqParams: the del TS parameters as specified by
3668 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003669
Jeff Johnson295189b2012-06-20 16:38:30 -07003670 wdiDelTsRspCb: callback for passing back the response of
3671 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003672
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003674 callback
3675
Jeff Johnson295189b2012-06-20 16:38:30 -07003676 @see WDI_AddTSReq
3677 @return Result of the function call
3678*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003679WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003680WDI_DelTSReq
3681(
3682 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3683 WDI_DelTsRspCb wdiDelTsRspCb,
3684 void* pUserData
3685)
3686{
3687 WDI_EventInfoType wdiEventData;
3688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3689
3690 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003691 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003692 ------------------------------------------------------------------------*/
3693 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3694 {
3695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3696 "WDI API call before module is initialized - Fail request");
3697
Jeff Johnsone7245742012-09-05 17:12:55 -07003698 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003699 }
3700
3701 /*------------------------------------------------------------------------
3702 Fill in Event data and post to the Main FSM
3703 ------------------------------------------------------------------------*/
3704 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003705 wdiEventData.pEventData = pwdiDelTsReqParams;
3706 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3707 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003708 wdiEventData.pUserData = pUserData;
3709
3710 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3711
3712}/*WDI_DelTSReq*/
3713
3714
3715
3716/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 wishes to update the EDCA parameters used by HW for QoS
3719 data traffic. Upon the call of this API the WLAN DAL
3720 will pack and send a HAL Update EDCA Params request
3721 message to the lower RIVA sub-system if DAL is in state
3722 STARTED.
3723
3724 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003725 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003726
3727 WDI_PostAssocReq must have been called.
3728
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003731
Jeff Johnson295189b2012-06-20 16:38:30 -07003732 wdiUpdateEDCAParamsRspCb: callback for passing back the
3733 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003734
Jeff Johnson295189b2012-06-20 16:38:30 -07003735 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003736 callback
3737
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 @see WDI_PostAssocReq
3739 @return Result of the function call
3740*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003741WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003742WDI_UpdateEDCAParams
3743(
3744 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3745 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3746 void* pUserData
3747)
3748{
3749 WDI_EventInfoType wdiEventData;
3750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3751
3752 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003753 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003754 ------------------------------------------------------------------------*/
3755 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3756 {
3757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3758 "WDI API call before module is initialized - Fail request");
3759
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 }
3762
3763 /*------------------------------------------------------------------------
3764 Fill in Event data and post to the Main FSM
3765 ------------------------------------------------------------------------*/
3766 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003767 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3768 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3769 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003770 wdiEventData.pUserData = pUserData;
3771
3772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3773
3774}/*WDI_UpdateEDCAParams*/
3775
3776
3777/**
3778 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3779 successfully a BA session and needs to notify the HW for
3780 the appropriate settings to take place. Upon the call of
3781 this API the WLAN DAL will pack and send a HAL Add BA
3782 request message to the lower RIVA sub-system if DAL is
3783 in state STARTED.
3784
3785 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003786 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003787
3788 WDI_PostAssocReq must have been called.
3789
3790 @param wdiAddBAReqParams: the add BA parameters as specified by
3791 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003792
Jeff Johnson295189b2012-06-20 16:38:30 -07003793 wdiAddBARspCb: callback for passing back the response of
3794 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003795
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003797 callback
3798
Jeff Johnson295189b2012-06-20 16:38:30 -07003799 @see WDI_PostAssocReq
3800 @return Result of the function call
3801*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003802WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003803WDI_AddBASessionReq
3804(
3805 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3806 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3807 void* pUserData
3808)
3809{
3810 WDI_EventInfoType wdiEventData;
3811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3812
3813 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003814 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003815 ------------------------------------------------------------------------*/
3816 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3817 {
3818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3819 "WDI API call before module is initialized - Fail request");
3820
Jeff Johnsone7245742012-09-05 17:12:55 -07003821 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003822 }
3823
3824 /*------------------------------------------------------------------------
3825 Fill in Event data and post to the Main FSM
3826 ------------------------------------------------------------------------*/
3827 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003828 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3829 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3830 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 wdiEventData.pUserData = pUserData;
3832
3833 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3834
3835}/*WDI_AddBASessionReq*/
3836
3837/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003838 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003839 inform HW that it has deleted a previously created BA
3840 session. Upon the call of this API the WLAN DAL will
3841 pack and send a HAL Del BA request message to the lower
3842 RIVA sub-system if DAL is in state STARTED.
3843
3844 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003845 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003846
3847 WDI_AddBAReq must have been called.
3848
3849 @param wdiDelBAReqParams: the del BA parameters as specified by
3850 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003851
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 wdiDelBARspCb: callback for passing back the response of
3853 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003854
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003856 callback
3857
Jeff Johnson295189b2012-06-20 16:38:30 -07003858 @see WDI_AddBAReq
3859 @return Result of the function call
3860*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003861WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003862WDI_DelBAReq
3863(
3864 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3865 WDI_DelBARspCb wdiDelBARspCb,
3866 void* pUserData
3867)
3868{
3869 WDI_EventInfoType wdiEventData;
3870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3871
3872 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003873 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003874 ------------------------------------------------------------------------*/
3875 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3876 {
3877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3878 "WDI API call before module is initialized - Fail request");
3879
Jeff Johnsone7245742012-09-05 17:12:55 -07003880 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003881 }
3882
3883 /*------------------------------------------------------------------------
3884 Fill in Event data and post to the Main FSM
3885 ------------------------------------------------------------------------*/
3886 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 wdiEventData.pEventData = pwdiDelBAReqParams;
3888 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3889 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 wdiEventData.pUserData = pUserData;
3891
3892 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3893
3894}/*WDI_DelBAReq*/
3895
Jeff Johnsone7245742012-09-05 17:12:55 -07003896/*========================================================================
3897
Jeff Johnson295189b2012-06-20 16:38:30 -07003898 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003899
Jeff Johnson295189b2012-06-20 16:38:30 -07003900==========================================================================*/
3901
3902/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003904 wants to set the power save related configurations of
3905 the WLAN Device. Upon the call of this API the WLAN DAL
3906 will pack and send a HAL Update CFG request message to
3907 the lower RIVA sub-system if DAL is in state STARTED.
3908
3909 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003910 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003911
3912 WDI_Start must have been called.
3913
Jeff Johnsone7245742012-09-05 17:12:55 -07003914 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003915 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003916
Jeff Johnson295189b2012-06-20 16:38:30 -07003917 wdiSetPwrSaveCfgCb: callback for passing back the
3918 response of the set power save cfg operation received
3919 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003920
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003922 callback
3923
Jeff Johnson295189b2012-06-20 16:38:30 -07003924 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003925 @return Result of the function call
3926*/
3927WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003928WDI_SetPwrSaveCfgReq
3929(
3930 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3931 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3932 void* pUserData
3933)
3934{
3935 WDI_EventInfoType wdiEventData;
3936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3937
3938 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 ------------------------------------------------------------------------*/
3941 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3942 {
3943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3944 "WDI API call before module is initialized - Fail request");
3945
Jeff Johnsone7245742012-09-05 17:12:55 -07003946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 }
3948
3949 /*------------------------------------------------------------------------
3950 Fill in Event data and post to the Main FSM
3951 ------------------------------------------------------------------------*/
3952 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003953 wdiEventData.pEventData = pwdiPowerSaveCfg;
3954 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3955 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 wdiEventData.pUserData = pUserData;
3957
3958 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3959
3960}/*WDI_SetPwrSaveCfgReq*/
3961
3962/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 request the device to get into IMPS power state. Upon
3965 the call of this API the WLAN DAL will send a HAL Enter
3966 IMPS request message to the lower RIVA sub-system if DAL
3967 is in state STARTED.
3968
3969 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003970 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003971
Jeff Johnsone7245742012-09-05 17:12:55 -07003972
3973 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003974 response of the Enter IMPS operation received from the
3975 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003976
Jeff Johnson295189b2012-06-20 16:38:30 -07003977 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003978 callback
3979
Jeff Johnson295189b2012-06-20 16:38:30 -07003980 @see WDI_Start
3981 @return Result of the function call
3982*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003983WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003984WDI_EnterImpsReq
3985(
Mihir Shetea4306052014-03-25 00:02:54 +05303986 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003987 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3988 void* pUserData
3989)
3990{
3991 WDI_EventInfoType wdiEventData;
3992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3993
3994 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003995 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003996 ------------------------------------------------------------------------*/
3997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3998 {
3999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4000 "WDI API call before module is initialized - Fail request");
4001
Jeff Johnsone7245742012-09-05 17:12:55 -07004002 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 }
4004
4005 /*------------------------------------------------------------------------
4006 Fill in Event data and post to the Main FSM
4007 ------------------------------------------------------------------------*/
4008 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05304009 wdiEventData.pEventData = pwdiEnterImpsReqParams;
4010 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004011 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004012 wdiEventData.pUserData = pUserData;
4013
4014 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4015
4016}/*WDI_EnterImpsReq*/
4017
4018/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004019 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 request the device to get out of IMPS power state. Upon
4021 the call of this API the WLAN DAL will send a HAL Exit
4022 IMPS request message to the lower RIVA sub-system if DAL
4023 is in state STARTED.
4024
4025 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004026 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004027
Jeff Johnson295189b2012-06-20 16:38:30 -07004028
Jeff Johnsone7245742012-09-05 17:12:55 -07004029
4030 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07004031 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004032
Jeff Johnson295189b2012-06-20 16:38:30 -07004033 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004034 callback
4035
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 @see WDI_Start
4037 @return Result of the function call
4038*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004039WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004040WDI_ExitImpsReq
4041(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05304042 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 WDI_ExitImpsRspCb wdiExitImpsRspCb,
4044 void* pUserData
4045)
4046{
4047 WDI_EventInfoType wdiEventData;
4048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4049
4050 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 ------------------------------------------------------------------------*/
4053 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4054 {
4055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4056 "WDI API call before module is initialized - Fail request");
4057
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004059 }
4060
4061 /*------------------------------------------------------------------------
4062 Fill in Event data and post to the Main FSM
4063 ------------------------------------------------------------------------*/
4064 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05304065 wdiEventData.pEventData = pwdiExitImpsReqParams;
4066 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004067 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004068 wdiEventData.pUserData = pUserData;
4069
4070 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4071
4072}/*WDI_ExitImpsReq*/
4073
4074/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004075 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004076 request the device to get into BMPS power state. Upon
4077 the call of this API the WLAN DAL will pack and send a
4078 HAL Enter BMPS request message to the lower RIVA
4079 sub-system if DAL is in state STARTED.
4080
4081 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004082 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004083
4084 WDI_PostAssocReq must have been called.
4085
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004088
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 wdiEnterBmpsRspCb: callback for passing back the
4090 response of the Enter BMPS operation received from the
4091 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004092
Jeff Johnson295189b2012-06-20 16:38:30 -07004093 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004094 callback
4095
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 @see WDI_PostAssocReq
4097 @return Result of the function call
4098*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004099WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004100WDI_EnterBmpsReq
4101(
4102 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
4103 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
4104 void* pUserData
4105)
4106{
4107 WDI_EventInfoType wdiEventData;
4108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4109
4110 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 ------------------------------------------------------------------------*/
4113 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4114 {
4115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4116 "WDI API call before module is initialized - Fail request");
4117
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004119 }
4120
4121 /*------------------------------------------------------------------------
4122 Fill in Event data and post to the Main FSM
4123 ------------------------------------------------------------------------*/
4124 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004125 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
4126 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
4127 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 wdiEventData.pUserData = pUserData;
4129
4130 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4131
4132}/*WDI_EnterBmpsReq*/
4133
4134/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004135 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004136 request the device to get out of BMPS power state. Upon
4137 the call of this API the WLAN DAL will pack and send a
4138 HAL Exit BMPS request message to the lower RIVA
4139 sub-system if DAL is in state STARTED.
4140
4141 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004142 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004143
4144 WDI_PostAssocReq must have been called.
4145
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004148
Jeff Johnson295189b2012-06-20 16:38:30 -07004149 wdiExitBmpsRspCb: callback for passing back the response
4150 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004151
Jeff Johnson295189b2012-06-20 16:38:30 -07004152 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 callback
4154
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 @see WDI_PostAssocReq
4156 @return Result of the function call
4157*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004158WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004159WDI_ExitBmpsReq
4160(
4161 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4162 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4163 void* pUserData
4164)
4165{
4166 WDI_EventInfoType wdiEventData;
4167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4168
4169 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 ------------------------------------------------------------------------*/
4172 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4173 {
4174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4175 "WDI API call before module is initialized - Fail request");
4176
Jeff Johnsone7245742012-09-05 17:12:55 -07004177 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004178 }
4179
4180 /*------------------------------------------------------------------------
4181 Fill in Event data and post to the Main FSM
4182 ------------------------------------------------------------------------*/
4183 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4185 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4186 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 wdiEventData.pUserData = pUserData;
4188
4189 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4190
4191}/*WDI_ExitBmpsReq*/
4192
4193/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004194 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004195 request the device to get into UAPSD power state. Upon
4196 the call of this API the WLAN DAL will pack and send a
4197 HAL Enter UAPSD request message to the lower RIVA
4198 sub-system if DAL is in state STARTED.
4199
4200 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004201 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004202
4203 WDI_PostAssocReq must have been called.
4204 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004205
4206 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004208
Jeff Johnson295189b2012-06-20 16:38:30 -07004209 wdiEnterUapsdRspCb: callback for passing back the
4210 response of the Enter UAPSD operation received from the
4211 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004212
Jeff Johnson295189b2012-06-20 16:38:30 -07004213 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 callback
4215
Jeff Johnson295189b2012-06-20 16:38:30 -07004216 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4217 @return Result of the function call
4218*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004219WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004220WDI_EnterUapsdReq
4221(
4222 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4223 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4224 void* pUserData
4225)
4226{
4227 WDI_EventInfoType wdiEventData;
4228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4229
4230 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004231 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004232 ------------------------------------------------------------------------*/
4233 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4234 {
4235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4236 "WDI API call before module is initialized - Fail request");
4237
Jeff Johnsone7245742012-09-05 17:12:55 -07004238 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 }
4240
4241 /*------------------------------------------------------------------------
4242 Fill in Event data and post to the Main FSM
4243 ------------------------------------------------------------------------*/
4244 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004245 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4246 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4247 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 wdiEventData.pUserData = pUserData;
4249
4250 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4251
4252}/*WDI_EnterUapsdReq*/
4253
4254/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004255 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004256 request the device to get out of UAPSD power state. Upon
4257 the call of this API the WLAN DAL will send a HAL Exit
4258 UAPSD request message to the lower RIVA sub-system if
4259 DAL is in state STARTED.
4260
4261 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004262 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004263
4264 WDI_PostAssocReq must have been called.
4265
Jeff Johnsone7245742012-09-05 17:12:55 -07004266 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004267 response of the Exit UAPSD operation received from the
4268 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004269
Jeff Johnson295189b2012-06-20 16:38:30 -07004270 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004271 callback
4272
Jeff Johnson295189b2012-06-20 16:38:30 -07004273 @see WDI_PostAssocReq
4274 @return Result of the function call
4275*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004276WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004277WDI_ExitUapsdReq
4278(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004279 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004280 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4281 void* pUserData
4282)
4283{
4284 WDI_EventInfoType wdiEventData;
4285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4286
4287 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004288 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004289 ------------------------------------------------------------------------*/
4290 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4291 {
4292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4293 "WDI API call before module is initialized - Fail request");
4294
Jeff Johnsone7245742012-09-05 17:12:55 -07004295 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 }
4297
4298 /*------------------------------------------------------------------------
4299 Fill in Event data and post to the Main FSM
4300 ------------------------------------------------------------------------*/
4301 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004302 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4303 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004304 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004305 wdiEventData.pUserData = pUserData;
4306
4307 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4308
4309}/*WDI_ExitUapsdReq*/
4310
4311/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004312 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 MAC wants to set the UAPSD related configurations
4314 of an associated STA (while acting as an AP) to the WLAN
4315 Device. Upon the call of this API the WLAN DAL will pack
4316 and send a HAL Update UAPSD params request message to
4317 the lower RIVA sub-system if DAL is in state STARTED.
4318
4319 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004320 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004321
4322 WDI_ConfigBSSReq must have been called.
4323
Jeff Johnsone7245742012-09-05 17:12:55 -07004324 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004325 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004326
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 wdiUpdateUapsdParamsCb: callback for passing back the
4328 response of the update UAPSD params operation received
4329 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004330
Jeff Johnson295189b2012-06-20 16:38:30 -07004331 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004332 callback
4333
Jeff Johnson295189b2012-06-20 16:38:30 -07004334 @see WDI_ConfigBSSReq
4335 @return Result of the function call
4336*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004337WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004338WDI_UpdateUapsdParamsReq
4339(
4340 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4341 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4342 void* pUserData
4343)
4344{
4345 WDI_EventInfoType wdiEventData;
4346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4347
4348 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004349 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004350 ------------------------------------------------------------------------*/
4351 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4352 {
4353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4354 "WDI API call before module is initialized - Fail request");
4355
Jeff Johnsone7245742012-09-05 17:12:55 -07004356 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 }
4358
4359 /*------------------------------------------------------------------------
4360 Fill in Event data and post to the Main FSM
4361 ------------------------------------------------------------------------*/
4362 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004363 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004364 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004365 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004366 wdiEventData.pUserData = pUserData;
4367
4368 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4369
4370}/*WDI_UpdateUapsdParamsReq*/
4371
4372/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004373 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004374 MAC wants to set the UAPSD related configurations before
4375 requesting for enter UAPSD power state to the WLAN
4376 Device. Upon the call of this API the WLAN DAL will pack
4377 and send a HAL Set UAPSD params request message to
4378 the lower RIVA sub-system if DAL is in state STARTED.
4379
4380 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004381 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004382
4383 WDI_PostAssocReq must have been called.
4384
4385 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4386 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004387
Jeff Johnson295189b2012-06-20 16:38:30 -07004388 wdiSetUapsdAcParamsCb: callback for passing back the
4389 response of the set UAPSD params operation received from
4390 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004391
Jeff Johnson295189b2012-06-20 16:38:30 -07004392 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 callback
4394
Jeff Johnson295189b2012-06-20 16:38:30 -07004395 @see WDI_PostAssocReq
4396 @return Result of the function call
4397*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004398WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004399WDI_SetUapsdAcParamsReq
4400(
4401 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4402 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4403 void* pUserData
4404)
4405{
4406 WDI_EventInfoType wdiEventData;
4407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4408
4409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004410 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004411 ------------------------------------------------------------------------*/
4412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4413 {
4414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4415 "WDI API call before module is initialized - Fail request");
4416
Jeff Johnsone7245742012-09-05 17:12:55 -07004417 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004418 }
4419
4420 /*------------------------------------------------------------------------
4421 Fill in Event data and post to the Main FSM
4422 ------------------------------------------------------------------------*/
4423 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004424 wdiEventData.pEventData = pwdiUapsdInfo;
4425 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4426 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 wdiEventData.pUserData = pUserData;
4428
4429 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4430
4431}/*WDI_SetUapsdAcParamsReq*/
4432
4433/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304434 @brief WDI_FWLoggingDXEdoneInd
4435
4436 FW Logging DXE done Indication from the upper layer will be sent
4437 down to HAL
4438
4439 @param WDI_FWLoggingDXEdoneIndInfoType
4440
4441 @see
4442
4443 @return Status of the request
4444*/
4445WDI_Status
4446WDI_FWLoggingDXEdoneInd
4447(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304448 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304449)
4450{
4451
4452 WDI_EventInfoType wdiEventData;
4453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4454
4455 /*------------------------------------------------------------------------
4456 Sanity Check
4457 ------------------------------------------------------------------------*/
4458 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4459 {
4460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4461 "WDI API call before module is initialized - Fail request");
4462
4463 return WDI_STATUS_E_NOT_ALLOWED;
4464 }
4465
4466 /*------------------------------------------------------------------------
4467 Fill in Event data and post to the Main FSM
4468 ------------------------------------------------------------------------*/
4469 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304470 wdiEventData.pEventData = (void *)&data;
4471 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304472 wdiEventData.pCBfnc = NULL;
4473 wdiEventData.pUserData = NULL;
4474
4475 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4476
4477}/*WDI_FWLoggingDXEdoneInd*/
4478
4479/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304480 @brief WDI_GetFrameLogReq will be called when the upper
4481 MAC wants to initialize frame logging. Upon the call of
4482 this API the WLAN DAL will pack and send a HAL
4483 Frame logging init request message to
4484 the lower RIVA sub-system.
4485
4486 In state BUSY this request will be queued. Request won't
4487 be allowed in any other state.
4488
4489
4490 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4491 as specified by the Device Interface
4492
4493 wdiGetFrameLogRspCb: callback for passing back the
4494 response of the frame logging init operation received
4495 from the device
4496
4497 pUserData: user data will be passed back with the
4498 callback
4499
4500 @return Result of the function call
4501*/
4502WDI_Status
4503WDI_GetFrameLogReq
4504(
4505 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4506 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4507 void* pUserData
4508)
4509{
4510 WDI_EventInfoType wdiEventData;
4511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4512
4513 /*------------------------------------------------------------------------
4514 Sanity Check
4515 ------------------------------------------------------------------------*/
4516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4517 {
4518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4519 "WDI API call before module is initialized - Fail request");
4520
4521 return WDI_STATUS_E_NOT_ALLOWED;
4522 }
4523
4524 /*------------------------------------------------------------------------
4525 Fill in Event data and post to the Main FSM
4526 ------------------------------------------------------------------------*/
4527 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4528 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4529 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4530 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4531 wdiEventData.pUserData = pUserData;
4532
4533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4534}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304535
4536
4537/**
4538 @brief WDI_FatalEventLogsReq will be called when the upper
4539 MAC wants to send the flush command. Upon the call of
4540 this API the WLAN DAL will pack and send a HAL
4541 Fatal Event Req message to the lower RIVA sub-system.
4542
4543 In state BUSY this request will be queued. Request won't
4544 be allowed in any other state.
4545
4546
4547 @param pwdiFlushLogsReqInfo: the Flush Logs params
4548 as specified by the Device Interface
4549
4550 wdiFlushLogsRspCb: callback for passing back the
4551 response of the Flush Logs operation received
4552 from the device
4553
4554 pUserData: user data will be passed back with the
4555 callback
4556
4557 @return Result of the function call
4558*/
4559
4560WDI_Status
4561WDI_FatalEventLogsReq
4562(
4563 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4564 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4565 void* pUserData
4566)
4567{
4568 WDI_EventInfoType wdiEventData;
4569
4570 /*------------------------------------------------------------------------
4571 Sanity Check
4572 ------------------------------------------------------------------------*/
4573 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4574 {
4575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4576 "WDI API call before module is initialized - Fail request");
4577
4578 return WDI_STATUS_E_NOT_ALLOWED;
4579 }
4580
4581 /*------------------------------------------------------------------------
4582 Fill in Event data and post to the Main FSM
4583 ------------------------------------------------------------------------*/
4584 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4585 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4586 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4587 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4588 wdiEventData.pUserData = pUserData;
4589
4590 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4591
4592}
4593
4594
Siddharth Bhal64246172015-02-27 01:04:37 +05304595/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304596 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304597 MAC wants to initialize frame logging. Upon the call of
4598 this API the WLAN DAL will pack and send a HAL
4599 Frame logging init request message to
4600 the lower RIVA sub-system.
4601
4602 In state BUSY this request will be queued. Request won't
4603 be allowed in any other state.
4604
4605
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304606 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304607 as specified by the Device Interface
4608
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304609 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304610 response of the frame logging init operation received
4611 from the device
4612
4613 pUserData: user data will be passed back with the
4614 callback
4615
4616 @return Result of the function call
4617*/
4618WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304619WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304620(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304621 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4622 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304623 void* pUserData
4624)
4625{
4626 WDI_EventInfoType wdiEventData;
4627
4628 /*------------------------------------------------------------------------
4629 Sanity Check
4630 ------------------------------------------------------------------------*/
4631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4632 {
4633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4634 "WDI API call before module is initialized - Fail request");
4635
4636 return WDI_STATUS_E_NOT_ALLOWED;
4637 }
4638
4639 /*------------------------------------------------------------------------
4640 Fill in Event data and post to the Main FSM
4641 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304642 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4643 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4644 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4645 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304646 wdiEventData.pUserData = pUserData;
4647
4648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4649}
4650
c_manjeecfd1efb2015-09-25 19:32:34 +05304651
4652/**
4653 @brief WDI_FwrMemDumpReq will be called when the upper
4654 MAC wants to get fwr mem dump. Upon the call of
4655 this API the WLAN DAL will pack and send a HAL
4656 Frame logging init request message to
4657 the lower RIVA sub-system.
4658
4659 In state BUSY this request will be queued. Request won't
4660 be allowed in any other state.
4661
4662
4663 @param pWdiFwrMemDumpReq: the fwr mem dump req params
4664 as specified by the Device Interface
4665
4666 wdiFWLoggingInitReqCb: callback for passing back the
4667 response of the frame logging init operation received
4668 from the device
4669
4670 pUserData: user data will be passed back with the
4671 callback
4672
4673 @return Result of the function call
4674*/
4675
4676WDI_Status
4677WDI_FwrMemDumpReq
4678
4679(
4680 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
4681 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
4682 void* pUserData
4683)
4684{
4685 WDI_EventInfoType wdiEventData;
4686
4687 /*------------------------------------------------------------------------
4688 Sanity Check
4689 ------------------------------------------------------------------------*/
4690 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4691 {
4692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4693 "WDI API call before module is initialized - Fail request");
4694
4695 return WDI_STATUS_E_NOT_ALLOWED;
4696 }
4697
4698 /*------------------------------------------------------------------------
4699 Fill in Event data and post to the Main FSM
4700 ------------------------------------------------------------------------*/
4701 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
4702 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
4703 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
4704 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
4705 wdiEventData.pUserData = pUserData;
4706
4707 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4708}
4709
4710
4711
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304712/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05304713 @brief WDI_StartRssiMonitorReq will be called when the upper
4714 MAC wants to initialize Rssi Monitor on a bssid.
4715 Upon the call of this API the WLAN DAL will pack and
4716 send a HAL Rssi Monitor init request message to
4717 the lower RIVA sub-system.
4718
4719 In state BUSY this request will be queued. Request won't
4720 be allowed in any other state.
4721
4722
4723 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4724 as specified by the Device Interface
4725
4726 wdiRssiMonitorStartRspCb: callback for passing back the
4727 response of the rssi monitor operation received
4728 from the device
4729
4730 pUserData: user data will be passed back with the
4731 callback
4732
4733 @return Result of the function call
4734*/
4735WDI_Status
4736WDI_StartRssiMonitorReq
4737(
4738 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4739 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
4740 void* pUserData
4741)
4742{
4743 WDI_EventInfoType wdiEventData;
4744
4745 /*------------------------------------------------------------------------
4746 Sanity Check
4747 ------------------------------------------------------------------------*/
4748 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4749 {
4750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4751 "WDI API call before module is initialized - Fail request");
4752
4753 return WDI_STATUS_E_NOT_ALLOWED;
4754 }
4755
4756 /*------------------------------------------------------------------------
4757 Fill in Event data and post to the Main FSM
4758 ------------------------------------------------------------------------*/
4759 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
4760 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4761 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4762 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
4763 wdiEventData.pUserData = pUserData;
4764
4765 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4766}
4767
4768/**
4769 @brief WDI_StopRssiMonitorReq will be called when the upper
4770 MAC wants to stop Rssi Monitor on a bssid.
4771 Upon the call of this API the WLAN DAL will pack and
4772 send a HAL Rssi Monitor stop request message to
4773 the lower RIVA sub-system.
4774
4775 In state BUSY this request will be queued. Request won't
4776 be allowed in any other state.
4777
4778
4779 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4780 as specified by the Device Interface
4781
4782 wdiRssiMonitorStopRspCb: callback for passing back the
4783 response of the rssi monitor operation received
4784 from the device
4785
4786 pUserData: user data will be passed back with the
4787 callback
4788
4789 @return Result of the function call
4790*/
4791WDI_Status
4792WDI_StopRssiMonitorReq
4793(
4794 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4795 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
4796 void* pUserData
4797)
4798{
4799 WDI_EventInfoType wdiEventData;
4800
4801 /*------------------------------------------------------------------------
4802 Sanity Check
4803 ------------------------------------------------------------------------*/
4804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4805 {
4806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4807 "WDI API call before module is initialized - Fail request");
4808
4809 return WDI_STATUS_E_NOT_ALLOWED;
4810 }
4811
4812 /*------------------------------------------------------------------------
4813 Fill in Event data and post to the Main FSM
4814 ------------------------------------------------------------------------*/
4815 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
4816 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4817 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4818 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
4819 wdiEventData.pUserData = pUserData;
4820
4821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4822}
4823
4824
4825/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004826 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004827 MAC wants to set/reset the RXP filters for received pkts
4828 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4829 and send a HAL configure RXP filter request message to
4830 the lower RIVA sub-system.
4831
4832 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004833 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004834
Jeff Johnsone7245742012-09-05 17:12:55 -07004835
4836 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 filter as specified by the Device
4838 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004839
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 wdiConfigureRxpFilterCb: callback for passing back the
4841 response of the configure RXP filter operation received
4842 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004843
Jeff Johnson295189b2012-06-20 16:38:30 -07004844 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004845 callback
4846
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 @return Result of the function call
4848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004850WDI_ConfigureRxpFilterReq
4851(
4852 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4853 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4854 void* pUserData
4855)
4856{
4857 WDI_EventInfoType wdiEventData;
4858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4859
4860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 ------------------------------------------------------------------------*/
4863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4864 {
4865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4866 "WDI API call before module is initialized - Fail request");
4867
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 }
4870
4871 /*------------------------------------------------------------------------
4872 Fill in Event data and post to the Main FSM
4873 ------------------------------------------------------------------------*/
4874 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4876 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4877 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 wdiEventData.pUserData = pUserData;
4879
4880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4881}/*WDI_ConfigureRxpFilterReq*/
4882
4883/**
4884 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4885 wants to set the beacon filters while in power save.
4886 Upon the call of this API the WLAN DAL will pack and
4887 send a Beacon filter request message to the
4888 lower RIVA sub-system.
4889
4890 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004891 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004892
Jeff Johnsone7245742012-09-05 17:12:55 -07004893
4894 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004895 filter as specified by the Device
4896 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004897
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 wdiBeaconFilterCb: callback for passing back the
4899 response of the set beacon filter operation received
4900 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004901
Jeff Johnson295189b2012-06-20 16:38:30 -07004902 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 callback
4904
Jeff Johnson295189b2012-06-20 16:38:30 -07004905 @return Result of the function call
4906*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004907WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004908WDI_SetBeaconFilterReq
4909(
4910 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4911 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4912 void* pUserData
4913)
4914{
4915 WDI_EventInfoType wdiEventData;
4916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4917
4918 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004919 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 ------------------------------------------------------------------------*/
4921 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4922 {
4923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4924 "WDI API call before module is initialized - Fail request");
4925
Jeff Johnsone7245742012-09-05 17:12:55 -07004926 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004927 }
4928
4929 /*------------------------------------------------------------------------
4930 Fill in Event data and post to the Main FSM
4931 ------------------------------------------------------------------------*/
4932 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004933 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004934 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004935 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004936 wdiEventData.pUserData = pUserData;
4937
4938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4939}/*WDI_SetBeaconFilterReq*/
4940
4941/**
4942 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4943 wants to remove the beacon filter for particular IE
4944 while in power save. Upon the call of this API the WLAN
4945 DAL will pack and send a remove Beacon filter request
4946 message to the lower RIVA sub-system.
4947
4948 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004950
Jeff Johnsone7245742012-09-05 17:12:55 -07004951
4952 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004953 filter as specified by the Device
4954 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004955
Jeff Johnson295189b2012-06-20 16:38:30 -07004956 wdiBeaconFilterCb: callback for passing back the
4957 response of the remove beacon filter operation received
4958 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004959
Jeff Johnson295189b2012-06-20 16:38:30 -07004960 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 callback
4962
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 @return Result of the function call
4964*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004965WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004966WDI_RemBeaconFilterReq
4967(
4968 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4969 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4970 void* pUserData
4971)
4972{
4973 WDI_EventInfoType wdiEventData;
4974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4975
4976 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 ------------------------------------------------------------------------*/
4979 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4980 {
4981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4982 "WDI API call before module is initialized - Fail request");
4983
Jeff Johnsone7245742012-09-05 17:12:55 -07004984 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 }
4986
4987 /*------------------------------------------------------------------------
4988 Fill in Event data and post to the Main FSM
4989 ------------------------------------------------------------------------*/
4990 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004991 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004992 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004994 wdiEventData.pUserData = pUserData;
4995
4996 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4997}/*WDI_RemBeaconFilterReq*/
4998
4999/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005000 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 MAC wants to set the RSSI thresholds related
5002 configurations while in power save. Upon the call of
5003 this API the WLAN DAL will pack and send a HAL Set RSSI
5004 thresholds request message to the lower RIVA
5005 sub-system if DAL is in state STARTED.
5006
5007 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005008 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005009
5010 WDI_PostAssocReq must have been called.
5011
5012 @param pwdiUapsdInfo: the UAPSD parameters as specified by
5013 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005014
Jeff Johnson295189b2012-06-20 16:38:30 -07005015 wdiSetUapsdAcParamsCb: callback for passing back the
5016 response of the set UAPSD params operation received from
5017 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005018
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005020 callback
5021
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 @see WDI_PostAssocReq
5023 @return Result of the function call
5024*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005025WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005026WDI_SetRSSIThresholdsReq
5027(
5028 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
5029 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
5030 void* pUserData
5031)
5032{
5033 WDI_EventInfoType wdiEventData;
5034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5035
5036 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005037 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 ------------------------------------------------------------------------*/
5039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5040 {
5041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5042 "WDI API call before module is initialized - Fail request");
5043
Jeff Johnsone7245742012-09-05 17:12:55 -07005044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005045 }
5046
5047 /*------------------------------------------------------------------------
5048 Fill in Event data and post to the Main FSM
5049 ------------------------------------------------------------------------*/
5050 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005051 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005052 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005053 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005054 wdiEventData.pUserData = pUserData;
5055
5056 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5057}/* WDI_SetRSSIThresholdsReq*/
5058
5059/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005060 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005061 wants to set the filter to minimize unnecessary host
5062 wakeup due to broadcast traffic while in power save.
5063 Upon the call of this API the WLAN DAL will pack and
5064 send a HAL host offload request message to the
5065 lower RIVA sub-system if DAL is in state STARTED.
5066
5067 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005068 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005069
5070 WDI_PostAssocReq must have been called.
5071
Jeff Johnsone7245742012-09-05 17:12:55 -07005072 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005073 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005074
Jeff Johnson295189b2012-06-20 16:38:30 -07005075 wdiHostOffloadCb: callback for passing back the response
5076 of the host offload operation received from the
5077 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005078
Jeff Johnson295189b2012-06-20 16:38:30 -07005079 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005080 callback
5081
Jeff Johnson295189b2012-06-20 16:38:30 -07005082 @see WDI_PostAssocReq
5083 @return Result of the function call
5084*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005085WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005086WDI_HostOffloadReq
5087(
5088 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
5089 WDI_HostOffloadCb wdiHostOffloadCb,
5090 void* pUserData
5091)
5092{
5093 WDI_EventInfoType wdiEventData;
5094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5095
5096 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005097 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005098 ------------------------------------------------------------------------*/
5099 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5100 {
5101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5102 "WDI API call before module is initialized - Fail request");
5103
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 }
5106
5107 /*------------------------------------------------------------------------
5108 Fill in Event data and post to the Main FSM
5109 ------------------------------------------------------------------------*/
5110 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005111 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005112 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005114 wdiEventData.pUserData = pUserData;
5115
5116 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5117}/*WDI_HostOffloadReq*/
5118
5119/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005120 @brief WDI_KeepAliveReq will be called when the upper MAC
5121 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 and minimize unnecessary host wakeups due to while in power save.
5123 Upon the call of this API the WLAN DAL will pack and
5124 send a HAL Keep Alive request message to the
5125 lower RIVA sub-system if DAL is in state STARTED.
5126
5127 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005128 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005129
5130 WDI_PostAssocReq must have been called.
5131
Jeff Johnsone7245742012-09-05 17:12:55 -07005132 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005133 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005134
Jeff Johnson295189b2012-06-20 16:38:30 -07005135 wdiKeepAliveCb: callback for passing back the response
5136 of the Keep Alive operation received from the
5137 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005138
Jeff Johnson295189b2012-06-20 16:38:30 -07005139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005140 callback
5141
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 @see WDI_PostAssocReq
5143 @return Result of the function call
5144*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005146WDI_KeepAliveReq
5147(
5148 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
5149 WDI_KeepAliveCb wdiKeepAliveCb,
5150 void* pUserData
5151)
5152{
5153 WDI_EventInfoType wdiEventData;
5154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5155
5156 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005157 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 ------------------------------------------------------------------------*/
5159 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5160 {
5161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5162 "WDI_KeepAliveReq: WDI API call before module "
5163 "is initialized - Fail request");
5164
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 }
5167
5168 /*------------------------------------------------------------------------
5169 Fill in Event data and post to the Main FSM
5170 ------------------------------------------------------------------------*/
5171 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005172 wdiEventData.pEventData = pwdiKeepAliveParams;
5173 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5174 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005175 wdiEventData.pUserData = pUserData;
5176
5177 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5178}/*WDI_KeepAliveReq*/
5179
5180/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005181 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 wants to set the Wowl Bcast ptrn to minimize unnecessary
5183 host wakeup due to broadcast traffic while in power
5184 save. Upon the call of this API the WLAN DAL will pack
5185 and send a HAL Wowl Bcast ptrn request message to the
5186 lower RIVA sub-system if DAL is in state STARTED.
5187
5188 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005190
5191 WDI_PostAssocReq must have been called.
5192
Jeff Johnsone7245742012-09-05 17:12:55 -07005193 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005194 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005195
Jeff Johnson295189b2012-06-20 16:38:30 -07005196 wdiWowlAddBcPtrnCb: callback for passing back the
5197 response of the add Wowl bcast ptrn operation received
5198 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005199
Jeff Johnson295189b2012-06-20 16:38:30 -07005200 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005201 callback
5202
Jeff Johnson295189b2012-06-20 16:38:30 -07005203 @see WDI_PostAssocReq
5204 @return Result of the function call
5205*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005206WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005207WDI_WowlAddBcPtrnReq
5208(
5209 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5210 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5211 void* pUserData
5212)
5213{
5214 WDI_EventInfoType wdiEventData;
5215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5216
5217 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005218 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005219 ------------------------------------------------------------------------*/
5220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5221 {
5222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5223 "WDI API call before module is initialized - Fail request");
5224
Jeff Johnsone7245742012-09-05 17:12:55 -07005225 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005226 }
5227
5228 /*------------------------------------------------------------------------
5229 Fill in Event data and post to the Main FSM
5230 ------------------------------------------------------------------------*/
5231 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005232 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005233 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005234 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005235 wdiEventData.pUserData = pUserData;
5236
5237 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5238}/*WDI_WowlAddBcPtrnReq*/
5239
5240/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005241 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005242 wants to clear the Wowl Bcast ptrn. Upon the call of
5243 this API the WLAN DAL will pack and send a HAL delete
5244 Wowl Bcast ptrn request message to the lower RIVA
5245 sub-system if DAL is in state STARTED.
5246
5247 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005249
5250 WDI_WowlAddBcPtrnReq must have been called.
5251
Jeff Johnsone7245742012-09-05 17:12:55 -07005252 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005253 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005254
Jeff Johnson295189b2012-06-20 16:38:30 -07005255 wdiWowlDelBcPtrnCb: callback for passing back the
5256 response of the del Wowl bcast ptrn operation received
5257 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005258
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005260 callback
5261
Jeff Johnson295189b2012-06-20 16:38:30 -07005262 @see WDI_WowlAddBcPtrnReq
5263 @return Result of the function call
5264*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005265WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005266WDI_WowlDelBcPtrnReq
5267(
5268 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5269 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5270 void* pUserData
5271)
5272{
5273 WDI_EventInfoType wdiEventData;
5274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5275
5276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005277 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005278 ------------------------------------------------------------------------*/
5279 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5280 {
5281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5282 "WDI API call before module is initialized - Fail request");
5283
Jeff Johnsone7245742012-09-05 17:12:55 -07005284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 }
5286
5287 /*------------------------------------------------------------------------
5288 Fill in Event data and post to the Main FSM
5289 ------------------------------------------------------------------------*/
5290 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005291 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005292 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005293 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005294 wdiEventData.pUserData = pUserData;
5295
5296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5297}/*WDI_WowlDelBcPtrnReq*/
5298
5299/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 wants to enter the Wowl state to minimize unnecessary
5302 host wakeup while in power save. Upon the call of this
5303 API the WLAN DAL will pack and send a HAL Wowl enter
5304 request message to the lower RIVA sub-system if DAL is
5305 in state STARTED.
5306
5307 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005308 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005309
5310 WDI_PostAssocReq must have been called.
5311
Jeff Johnsone7245742012-09-05 17:12:55 -07005312 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005313 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005314
Jeff Johnson295189b2012-06-20 16:38:30 -07005315 wdiWowlEnterReqCb: callback for passing back the
5316 response of the enter Wowl operation received from the
5317 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005318
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005320 callback
5321
Jeff Johnson295189b2012-06-20 16:38:30 -07005322 @see WDI_PostAssocReq
5323 @return Result of the function call
5324*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005325WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005326WDI_WowlEnterReq
5327(
5328 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5329 WDI_WowlEnterReqCb wdiWowlEnterCb,
5330 void* pUserData
5331)
5332{
5333 WDI_EventInfoType wdiEventData;
5334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5335
5336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 ------------------------------------------------------------------------*/
5339 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5340 {
5341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5342 "WDI API call before module is initialized - Fail request");
5343
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 }
5346
5347 /*------------------------------------------------------------------------
5348 Fill in Event data and post to the Main FSM
5349 ------------------------------------------------------------------------*/
5350 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005352 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005353 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005354 wdiEventData.pUserData = pUserData;
5355
5356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5357}/*WDI_WowlEnterReq*/
5358
5359/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005360 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005361 wants to exit the Wowl state. Upon the call of this API
5362 the WLAN DAL will pack and send a HAL Wowl exit request
5363 message to the lower RIVA sub-system if DAL is in state
5364 STARTED.
5365
5366 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005367 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005368
5369 WDI_WowlEnterReq must have been called.
5370
Jeff Johnsone7245742012-09-05 17:12:55 -07005371 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005372 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005373
Jeff Johnson295189b2012-06-20 16:38:30 -07005374 wdiWowlExitReqCb: callback for passing back the response
5375 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005376
Jeff Johnson295189b2012-06-20 16:38:30 -07005377 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005378 callback
5379
Jeff Johnson295189b2012-06-20 16:38:30 -07005380 @see WDI_WowlEnterReq
5381 @return Result of the function call
5382*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005383WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005384WDI_WowlExitReq
5385(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005386 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 WDI_WowlExitReqCb wdiWowlExitCb,
5388 void* pUserData
5389)
5390{
5391 WDI_EventInfoType wdiEventData;
5392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5393
5394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 ------------------------------------------------------------------------*/
5397 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5398 {
5399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5400 "WDI API call before module is initialized - Fail request");
5401
Jeff Johnsone7245742012-09-05 17:12:55 -07005402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005403 }
5404
5405 /*------------------------------------------------------------------------
5406 Fill in Event data and post to the Main FSM
5407 ------------------------------------------------------------------------*/
5408 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005409 wdiEventData.pEventData = pwdiWowlExitParams;
5410 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005411 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005412 wdiEventData.pUserData = pUserData;
5413
5414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5415}/*WDI_WowlExitReq*/
5416
5417/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005418 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005419 the upper MAC wants to dynamically adjusts the listen
5420 interval based on the WLAN/MSM activity. Upon the call
5421 of this API the WLAN DAL will pack and send a HAL
5422 configure Apps Cpu Wakeup State request message to the
5423 lower RIVA sub-system.
5424
5425 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005426 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005427
Jeff Johnsone7245742012-09-05 17:12:55 -07005428
5429 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005430 Apps Cpu Wakeup State as specified by the
5431 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005432
Jeff Johnson295189b2012-06-20 16:38:30 -07005433 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5434 back the response of the configure Apps Cpu Wakeup State
5435 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005436
Jeff Johnson295189b2012-06-20 16:38:30 -07005437 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005438 callback
5439
Jeff Johnson295189b2012-06-20 16:38:30 -07005440 @return Result of the function call
5441*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005442WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005443WDI_ConfigureAppsCpuWakeupStateReq
5444(
5445 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5446 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5447 void* pUserData
5448)
5449{
5450 WDI_EventInfoType wdiEventData;
5451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5452
5453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005454 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 ------------------------------------------------------------------------*/
5456 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5457 {
5458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5459 "WDI API call before module is initialized - Fail request");
5460
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 }
5463
5464 /*------------------------------------------------------------------------
5465 Fill in Event data and post to the Main FSM
5466 ------------------------------------------------------------------------*/
5467 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005468 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5469 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5470 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 wdiEventData.pUserData = pUserData;
5472
5473 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5474}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5475/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005476 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005477 to to perform a flush operation on a given AC. Upon the
5478 call of this API the WLAN DAL will pack and send a HAL
5479 Flush AC request message to the lower RIVA sub-system if
5480 DAL is in state STARTED.
5481
5482 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005483 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005484
5485 WDI_AddBAReq must have been called.
5486
Jeff Johnsone7245742012-09-05 17:12:55 -07005487 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005488 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005489
Jeff Johnson295189b2012-06-20 16:38:30 -07005490 wdiFlushAcRspCb: callback for passing back the response
5491 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005492
Jeff Johnson295189b2012-06-20 16:38:30 -07005493 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005494 callback
5495
Jeff Johnson295189b2012-06-20 16:38:30 -07005496 @see WDI_AddBAReq
5497 @return Result of the function call
5498*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005500WDI_FlushAcReq
5501(
5502 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5503 WDI_FlushAcRspCb wdiFlushAcRspCb,
5504 void* pUserData
5505)
5506{
5507 WDI_EventInfoType wdiEventData;
5508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5509
5510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005511 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005512 ------------------------------------------------------------------------*/
5513 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5514 {
5515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5516 "WDI API call before module is initialized - Fail request");
5517
Jeff Johnsone7245742012-09-05 17:12:55 -07005518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005519 }
5520
5521 /*------------------------------------------------------------------------
5522 Fill in Event data and post to the Main FSM
5523 ------------------------------------------------------------------------*/
5524 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005525 wdiEventData.pEventData = pwdiFlushAcReqParams;
5526 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5527 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005528 wdiEventData.pUserData = pUserData;
5529
5530 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5531
5532}/*WDI_FlushAcReq*/
5533
5534/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005535 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005536 wants to notify the lower mac on a BT AMP event. This is
5537 to inform BTC-SLM that some BT AMP event occurred. Upon
5538 the call of this API the WLAN DAL will pack and send a
5539 HAL BT AMP event request message to the lower RIVA
5540 sub-system if DAL is in state STARTED.
5541
5542 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005543 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005544
Jeff Johnsone7245742012-09-05 17:12:55 -07005545
5546 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005547 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005548
Jeff Johnson295189b2012-06-20 16:38:30 -07005549 wdiBtAmpEventRspCb: callback for passing back the
5550 response of the BT AMP event operation received from the
5551 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005552
Jeff Johnson295189b2012-06-20 16:38:30 -07005553 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005554 callback
5555
Jeff Johnson295189b2012-06-20 16:38:30 -07005556 @return Result of the function call
5557*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005559WDI_BtAmpEventReq
5560(
5561 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5562 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5563 void* pUserData
5564)
5565{
5566 WDI_EventInfoType wdiEventData;
5567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5568
5569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 ------------------------------------------------------------------------*/
5572 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5573 {
5574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5575 "WDI API call before module is initialized - Fail request");
5576
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005578 }
5579
5580 /*------------------------------------------------------------------------
5581 Fill in Event data and post to the Main FSM
5582 ------------------------------------------------------------------------*/
5583 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005584 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5585 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5586 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 wdiEventData.pUserData = pUserData;
5588
5589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5590
5591}/*WDI_BtAmpEventReq*/
5592
Jeff Johnsone7245742012-09-05 17:12:55 -07005593#ifdef FEATURE_OEM_DATA_SUPPORT
5594/**
5595 @brief WDI_Start Oem Data Req will be called when the upper MAC
5596 wants to notify the lower mac on a oem data Req event.Upon
5597 the call of this API the WLAN DAL will pack and send a
5598 HAL OEM Data Req event request message to the lower RIVA
5599 sub-system if DAL is in state STARTED.
5600
5601 In state BUSY this request will be queued. Request won't
5602 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005603
5604
Jeff Johnsone7245742012-09-05 17:12:55 -07005605
5606 @param pwdiOemDataReqParams: the Oem Data Req as
5607 specified by the Device Interface
5608
5609 wdiStartOemDataRspCb: callback for passing back the
5610 response of the Oem Data Req received from the
5611 device
5612
5613 pUserData: user data will be passed back with the
5614 callback
5615
5616 @return Result of the function call
5617*/
5618WDI_Status
5619WDI_StartOemDataReq
5620(
5621 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5622 WDI_oemDataRspCb wdiOemDataRspCb,
5623 void* pUserData
5624)
5625{
5626 WDI_EventInfoType wdiEventData;
5627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5628
5629 /*------------------------------------------------------------------------
5630 Sanity Check
5631 ------------------------------------------------------------------------*/
5632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5633 {
5634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5635 "WDI API call before module is initialized - Fail request");
5636
5637 return WDI_STATUS_E_NOT_ALLOWED;
5638 }
5639
5640 /*------------------------------------------------------------------------
5641 Fill in Event data and post to the Main FSM
5642 ------------------------------------------------------------------------*/
5643 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5644 wdiEventData.pEventData = pwdiOemDataReqParams;
5645 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5646 wdiEventData.pCBfnc = wdiOemDataRspCb;
5647 wdiEventData.pUserData = pUserData;
5648
5649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5650
5651
5652}
5653
5654#endif
5655
5656
5657/*========================================================================
5658
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005660
Jeff Johnson295189b2012-06-20 16:38:30 -07005661==========================================================================*/
5662/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005663 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005664 the WLAN HW to change the current channel of operation.
5665 Upon the call of this API the WLAN DAL will pack and
5666 send a HAL Start request message to the lower RIVA
5667 sub-system if DAL is in state STARTED.
5668
5669 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005670 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005671
5672 WDI_Start must have been called.
5673
Jeff Johnsone7245742012-09-05 17:12:55 -07005674 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005675 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005676
Jeff Johnson295189b2012-06-20 16:38:30 -07005677 wdiSwitchChRspCb: callback for passing back the response
5678 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005679
Jeff Johnson295189b2012-06-20 16:38:30 -07005680 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005681 callback
5682
Jeff Johnson295189b2012-06-20 16:38:30 -07005683 @see WDI_Start
5684 @return Result of the function call
5685*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005686WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005687WDI_SwitchChReq
5688(
5689 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5690 WDI_SwitchChRspCb wdiSwitchChRspCb,
5691 void* pUserData
5692)
5693{
5694 WDI_EventInfoType wdiEventData;
5695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5696
5697 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005698 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005699 ------------------------------------------------------------------------*/
5700 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5701 {
5702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5703 "WDI API call before module is initialized - Fail request");
5704
Jeff Johnsone7245742012-09-05 17:12:55 -07005705 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005706 }
5707
5708 /*------------------------------------------------------------------------
5709 Fill in Event data and post to the Main FSM
5710 ------------------------------------------------------------------------*/
5711 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 wdiEventData.pEventData = pwdiSwitchChReqParams;
5713 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5714 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005715 wdiEventData.pUserData = pUserData;
5716
5717 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5718
5719}/*WDI_SwitchChReq*/
5720
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005721/**
5722 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5723 the WLAN HW to change the current channel of operation.
5724 Upon the call of this API the WLAN DAL will pack and
5725 send a HAL Start request message to the lower RIVA
5726 sub-system if DAL is in state STARTED.
5727 This request message also includes source of channel switch,
5728 like CSA,
5729
5730 In state BUSY this request will be queued. Request won't
5731 be allowed in any other state.
5732
5733 WDI_Start must have been called.
5734
5735 @param wdiSwitchChReqParams: the switch ch parameters as
5736 specified by the Device Interface
5737
5738 wdiSwitchChRspCb: callback for passing back the response
5739 of the switch ch operation received from the device
5740
5741 pUserData: user data will be passed back with the
5742 callback
5743
5744 @see WDI_Start
5745 @return Result of the function call
5746*/
5747WDI_Status
5748WDI_SwitchChReq_V1
5749(
5750 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5751 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5752 void* pUserData
5753)
5754{
5755 WDI_EventInfoType wdiEventData;
5756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5758 "WDI API call WDI_SwitchChReq_V1");
5759 /*------------------------------------------------------------------------
5760 Sanity Check
5761 ------------------------------------------------------------------------*/
5762 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5763 {
5764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5765 "WDI API call before module is initialized - Fail request");
5766
5767 return WDI_STATUS_E_NOT_ALLOWED;
5768 }
5769
5770 /*------------------------------------------------------------------------
5771 Fill in Event data and post to the Main FSM
5772 ------------------------------------------------------------------------*/
5773 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5774 wdiEventData.pEventData = pwdiSwitchChReqParams;
5775 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5776 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5777 wdiEventData.pUserData = pUserData;
5778
5779 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5780
5781}/*WDI_SwitchChReq_V1*/
5782
Jeff Johnson295189b2012-06-20 16:38:30 -07005783
5784/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005785 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005786 wishes to add or update a STA in HW. Upon the call of
5787 this API the WLAN DAL will pack and send a HAL Start
5788 message request message to the lower RIVA sub-system if
5789 DAL is in state STARTED.
5790
5791 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005792 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005793
5794 WDI_Start must have been called.
5795
Jeff Johnsone7245742012-09-05 17:12:55 -07005796 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005798
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 wdiConfigSTARspCb: callback for passing back the
5800 response of the config STA operation received from the
5801 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005802
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005804 callback
5805
Jeff Johnson295189b2012-06-20 16:38:30 -07005806 @see WDI_Start
5807 @return Result of the function call
5808*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005809WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005810WDI_ConfigSTAReq
5811(
5812 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5813 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5814 void* pUserData
5815)
5816{
5817 WDI_EventInfoType wdiEventData;
5818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5819
5820 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005821 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005822 ------------------------------------------------------------------------*/
5823 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5824 {
5825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5826 "WDI API call before module is initialized - Fail request");
5827
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005829 }
5830
5831 /*------------------------------------------------------------------------
5832 Fill in Event data and post to the Main FSM
5833 ------------------------------------------------------------------------*/
5834 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5836 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5837 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 wdiEventData.pUserData = pUserData;
5839
5840 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5841
5842}/*WDI_ConfigSTAReq*/
5843
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005844 /**
5845 @brief WDI_UpdateChannelReq will be called when the upper MAC
5846 wants to update the channel list on change in country code.
5847
5848 In state BUSY this request will be queued. Request won't
5849 be allowed in any other state.
5850
5851 WDI_UpdateChannelReq must have been called.
5852
5853 @param wdiUpdateChannelReqParams: the updated channel parameters
5854 as specified by the Device Interface
5855
5856 wdiUpdateChannelRspCb: callback for passing back the
5857 response of the update channel operation received from
5858 the device
5859
5860 pUserData: user data will be passed back with the
5861 callback
5862
5863 @return Result of the function call
5864*/
5865WDI_Status
5866WDI_UpdateChannelReq
5867(
5868 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5869 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5870 void* pUserData
5871)
5872{
5873 WDI_EventInfoType wdiEventData = {{0}};
5874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5875
5876 /*------------------------------------------------------------------------
5877 Sanity Check
5878 ------------------------------------------------------------------------*/
5879 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5880 {
5881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5882 "WDI API call before module is initialized - Fail request");
5883
5884 return WDI_STATUS_E_NOT_ALLOWED;
5885 }
5886
5887 /*------------------------------------------------------------------------
5888 Fill in Event data and post to the Main FSM
5889 ------------------------------------------------------------------------*/
5890 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5891 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5892 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5893 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5894 wdiEventData.pUserData = pUserData;
5895
5896 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5897
5898}/*WDI_UpdateChannelReq*/
5899
Jeff Johnson295189b2012-06-20 16:38:30 -07005900/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005901 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005902 wants to change the state of an ongoing link. Upon the
5903 call of this API the WLAN DAL will pack and send a HAL
5904 Start message request message to the lower RIVA
5905 sub-system if DAL is in state STARTED.
5906
5907 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005908 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005909
5910 WDI_JoinStartReq must have been called.
5911
Jeff Johnsone7245742012-09-05 17:12:55 -07005912 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005913 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005914
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 wdiSetLinkStateRspCb: callback for passing back the
5916 response of the set link state operation received from
5917 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005918
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005920 callback
5921
Jeff Johnson295189b2012-06-20 16:38:30 -07005922 @see WDI_JoinStartReq
5923 @return Result of the function call
5924*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005925WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005926WDI_SetLinkStateReq
5927(
5928 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5929 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5930 void* pUserData
5931)
5932{
5933 WDI_EventInfoType wdiEventData;
5934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5935
5936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005937 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005938 ------------------------------------------------------------------------*/
5939 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5940 {
5941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5942 "WDI API call before module is initialized - Fail request");
5943
Jeff Johnsone7245742012-09-05 17:12:55 -07005944 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005945 }
5946
5947 /*------------------------------------------------------------------------
5948 Fill in Event data and post to the Main FSM
5949 ------------------------------------------------------------------------*/
5950 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005951 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5952 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5953 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005954 wdiEventData.pUserData = pUserData;
5955
5956 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5957
5958}/*WDI_SetLinkStateReq*/
5959
5960
5961/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005962 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 to get statistics (MIB counters) from the device. Upon
5964 the call of this API the WLAN DAL will pack and send a
5965 HAL Start request message to the lower RIVA sub-system
5966 if DAL is in state STARTED.
5967
5968 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005969 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005970
5971 WDI_Start must have been called.
5972
Jeff Johnsone7245742012-09-05 17:12:55 -07005973 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005974 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005975
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 wdiGetStatsRspCb: callback for passing back the response
5977 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005978
Jeff Johnson295189b2012-06-20 16:38:30 -07005979 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005980 callback
5981
Jeff Johnson295189b2012-06-20 16:38:30 -07005982 @see WDI_Start
5983 @return Result of the function call
5984*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005985WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005986WDI_GetStatsReq
5987(
5988 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5989 WDI_GetStatsRspCb wdiGetStatsRspCb,
5990 void* pUserData
5991)
5992{
5993 WDI_EventInfoType wdiEventData;
5994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5995
5996 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005997 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005998 ------------------------------------------------------------------------*/
5999 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6000 {
6001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6002 "WDI API call before module is initialized - Fail request");
6003
Jeff Johnsone7245742012-09-05 17:12:55 -07006004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 }
6006
6007 /*------------------------------------------------------------------------
6008 Fill in Event data and post to the Main FSM
6009 ------------------------------------------------------------------------*/
6010 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006011 wdiEventData.pEventData = pwdiGetStatsReqParams;
6012 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
6013 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006014 wdiEventData.pUserData = pUserData;
6015
6016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6017
6018}/*WDI_GetStatsReq*/
6019
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08006020#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08006021/**
6022 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
6023 to get roam rssi from the device. Upon
6024 the call of this API the WLAN DAL will pack and send a
6025 HAL Start request message to the lower RIVA sub-system
6026 if DAL is in state STARTED.
6027
6028 In state BUSY this request will be queued. Request won't
6029 be allowed in any other state.
6030
6031 WDI_Start must have been called.
6032
6033 @param wdiGetRoamRssiReqParams: the stats parameters to get as
6034 specified by the Device Interface
6035
6036 wdiGetRoamRssiRspCb: callback for passing back the response
6037 of the get stats operation received from the device
6038
6039 pUserData: user data will be passed back with the
6040 callback
6041
6042 @see WDI_Start
6043 @return Result of the function call
6044*/
6045WDI_Status
6046WDI_GetRoamRssiReq
6047(
6048 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
6049 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
6050 void* pUserData
6051)
6052{
6053 WDI_EventInfoType wdiEventData;
6054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6055
6056 /*------------------------------------------------------------------------
6057 Sanity Check
6058 ------------------------------------------------------------------------*/
6059 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6060 {
6061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6062 "WDI API call before module is initialized - Fail request");
6063
6064 return WDI_STATUS_E_NOT_ALLOWED;
6065 }
6066 /*------------------------------------------------------------------------
6067 Fill in Event data and post to the Main FSM
6068 ------------------------------------------------------------------------*/
6069 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
6070 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
6071 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
6072 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
6073 wdiEventData.pUserData = pUserData;
6074
6075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6076
6077}/*WDI_GetRoamRssiReq*/
6078#endif
6079
Jeff Johnson295189b2012-06-20 16:38:30 -07006080
6081/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006082 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07006083 it wishes to change the configuration of the WLAN
6084 Device. Upon the call of this API the WLAN DAL will pack
6085 and send a HAL Update CFG request message to the lower
6086 RIVA sub-system if DAL is in state STARTED.
6087
6088 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006089 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006090
6091 WDI_Start must have been called.
6092
Jeff Johnsone7245742012-09-05 17:12:55 -07006093 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006094 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006095
Jeff Johnson295189b2012-06-20 16:38:30 -07006096 wdiUpdateCfgsRspCb: callback for passing back the
6097 response of the update cfg operation received from the
6098 device
Jeff Johnsone7245742012-09-05 17:12:55 -07006099
Jeff Johnson295189b2012-06-20 16:38:30 -07006100 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006101 callback
6102
Jeff Johnson295189b2012-06-20 16:38:30 -07006103 @see WDI_Start
6104 @return Result of the function call
6105*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006106WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006107WDI_UpdateCfgReq
6108(
6109 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
6110 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
6111 void* pUserData
6112)
6113{
6114 WDI_EventInfoType wdiEventData;
6115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6116
6117 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006118 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006119 ------------------------------------------------------------------------*/
6120 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6121 {
6122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6123 "WDI API call before module is initialized - Fail request");
6124
Jeff Johnsone7245742012-09-05 17:12:55 -07006125 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006126 }
6127
6128 /*------------------------------------------------------------------------
6129 Fill in Event data and post to the Main FSM
6130 ------------------------------------------------------------------------*/
6131 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006132 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
6133 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
6134 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006135 wdiEventData.pUserData = pUserData;
6136
6137 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6138
6139}/*WDI_UpdateCfgReq*/
6140
6141
6142
6143/**
6144 @brief WDI_AddBAReq will be called when the upper MAC has setup
6145 successfully a BA session and needs to notify the HW for
6146 the appropriate settings to take place. Upon the call of
6147 this API the WLAN DAL will pack and send a HAL Add BA
6148 request message to the lower RIVA sub-system if DAL is
6149 in state STARTED.
6150
6151 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006152 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006153
6154 WDI_PostAssocReq must have been called.
6155
6156 @param wdiAddBAReqParams: the add BA parameters as specified by
6157 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006158
Jeff Johnson295189b2012-06-20 16:38:30 -07006159 wdiAddBARspCb: callback for passing back the response of
6160 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006161
Jeff Johnson295189b2012-06-20 16:38:30 -07006162 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006163 callback
6164
Jeff Johnson295189b2012-06-20 16:38:30 -07006165 @see WDI_PostAssocReq
6166 @return Result of the function call
6167*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006168WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006169WDI_AddBAReq
6170(
6171 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6172 WDI_AddBARspCb wdiAddBARspCb,
6173 void* pUserData
6174)
6175{
6176 WDI_EventInfoType wdiEventData;
6177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6178
6179 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006180 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006181 ------------------------------------------------------------------------*/
6182 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6183 {
6184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6185 "WDI API call before module is initialized - Fail request");
6186
Jeff Johnsone7245742012-09-05 17:12:55 -07006187 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006188 }
6189
6190 /*------------------------------------------------------------------------
6191 Fill in Event data and post to the Main FSM
6192 ------------------------------------------------------------------------*/
6193 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006194 wdiEventData.pEventData = pwdiAddBAReqParams;
6195 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6196 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006197 wdiEventData.pUserData = pUserData;
6198
6199 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6200
6201}/*WDI_AddBAReq*/
6202
6203
6204/**
6205 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6206 successfully a BA session and needs to notify the HW for
6207 the appropriate settings to take place. Upon the call of
6208 this API the WLAN DAL will pack and send a HAL Add BA
6209 request message to the lower RIVA sub-system if DAL is
6210 in state STARTED.
6211
6212 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006213 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006214
6215 WDI_PostAssocReq must have been called.
6216
6217 @param wdiAddBAReqParams: the add BA parameters as specified by
6218 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006219
Abhishek Singhe5066502016-02-05 18:07:41 +05306220 baReqParamUserDataSize: user data size of wdiAddBAReqParams
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 wdiAddBARspCb: callback for passing back the response of
6222 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006223
Jeff Johnson295189b2012-06-20 16:38:30 -07006224 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006225 callback
6226
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 @see WDI_PostAssocReq
6228 @return Result of the function call
6229*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006230WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006231WDI_TriggerBAReq
6232(
6233 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
Abhishek Singhe5066502016-02-05 18:07:41 +05306234 wpt_uint8 baReqParamUserDataSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006235 WDI_TriggerBARspCb wdiTriggerBARspCb,
6236 void* pUserData
6237)
6238{
6239 WDI_EventInfoType wdiEventData;
6240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6241
6242 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006243 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 ------------------------------------------------------------------------*/
6245 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6246 {
6247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6248 "WDI API call before module is initialized - Fail request");
6249
Jeff Johnsone7245742012-09-05 17:12:55 -07006250 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006251 }
6252
6253 /*------------------------------------------------------------------------
6254 Fill in Event data and post to the Main FSM
6255 ------------------------------------------------------------------------*/
6256 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006257 wdiEventData.pEventData = pwdiTriggerBAReqParams;
Abhishek Singhe5066502016-02-05 18:07:41 +05306258 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams)
6259 + baReqParamUserDataSize;
Jeff Johnsone7245742012-09-05 17:12:55 -07006260 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006261 wdiEventData.pUserData = pUserData;
6262
6263 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6264
6265}/*WDI_AddBAReq*/
6266
6267/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006268 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 wishes to update any of the Beacon parameters used by HW.
6270 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6271 message to the lower RIVA sub-system if DAL is in state
6272 STARTED.
6273
6274 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006276
6277 WDI_PostAssocReq must have been called.
6278
Jeff Johnsone7245742012-09-05 17:12:55 -07006279 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006280 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006281
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 wdiUpdateBeaconParamsRspCb: callback for passing back the
6283 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006284
Jeff Johnson295189b2012-06-20 16:38:30 -07006285 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006286 callback
6287
Jeff Johnson295189b2012-06-20 16:38:30 -07006288 @see WDI_PostAssocReq
6289 @return Result of the function call
6290*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006291WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006292WDI_UpdateBeaconParamsReq
6293(
6294 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6295 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6296 void* pUserData
6297)
6298{
6299 WDI_EventInfoType wdiEventData;
6300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6301
6302 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006303 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 ------------------------------------------------------------------------*/
6305 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6306 {
6307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6308 "WDI API call before module is initialized - Fail request");
6309
Jeff Johnsone7245742012-09-05 17:12:55 -07006310 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 }
6312
6313 /*------------------------------------------------------------------------
6314 Fill in Event data and post to the Main FSM
6315 ------------------------------------------------------------------------*/
6316 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006317 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6318 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6319 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006320 wdiEventData.pUserData = pUserData;
6321
6322 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6323
6324}/*WDI_UpdateBeaconParamsReq*/
6325
6326/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006327 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006328 wishes to update the Beacon template used by HW.
6329 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6330 message to the lower RIVA sub-system if DAL is in state
6331 STARTED.
6332
6333 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006334 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006335
6336 WDI_PostAssocReq must have been called.
6337
Jeff Johnsone7245742012-09-05 17:12:55 -07006338 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006339 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006340
Jeff Johnson295189b2012-06-20 16:38:30 -07006341 wdiSendBeaconParamsRspCb: callback for passing back the
6342 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006343
Jeff Johnson295189b2012-06-20 16:38:30 -07006344 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006345 callback
6346
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 @see WDI_PostAssocReq
6348 @return Result of the function call
6349*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006350WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006351WDI_SendBeaconParamsReq
6352(
6353 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6354 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6355 void* pUserData
6356)
6357{
6358 WDI_EventInfoType wdiEventData;
6359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6360
6361 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006362 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006363 ------------------------------------------------------------------------*/
6364 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6365 {
6366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6367 "WDI API call before module is initialized - Fail request");
6368
Jeff Johnsone7245742012-09-05 17:12:55 -07006369 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006370 }
6371
6372 /*------------------------------------------------------------------------
6373 Fill in Event data and post to the Main FSM
6374 ------------------------------------------------------------------------*/
6375 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006376 wdiEventData.pEventData = pwdiSendBeaconParams;
6377 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6378 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006379 wdiEventData.pUserData = pUserData;
6380
6381 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6382
6383}/*WDI_SendBeaconParamsReq*/
6384
6385/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006386 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006387 upper MAC wants to update the probe response template to
6388 be transmitted as Soft AP
6389 Upon the call of this API the WLAN DAL will
6390 pack and send the probe rsp template message to the
6391 lower RIVA sub-system if DAL is in state STARTED.
6392
6393 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006395
6396
Jeff Johnsone7245742012-09-05 17:12:55 -07006397 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006398 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006399
Jeff Johnson295189b2012-06-20 16:38:30 -07006400 wdiSendBeaconParamsRspCb: callback for passing back the
6401 response of the Send Beacon Params operation received
6402 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006405 callback
6406
Jeff Johnson295189b2012-06-20 16:38:30 -07006407 @see WDI_AddBAReq
6408 @return Result of the function call
6409*/
6410
Jeff Johnsone7245742012-09-05 17:12:55 -07006411WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006412WDI_UpdateProbeRspTemplateReq
6413(
6414 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6415 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6416 void* pUserData
6417)
6418{
6419 WDI_EventInfoType wdiEventData;
6420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6421
6422 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006423 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006424 ------------------------------------------------------------------------*/
6425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6426 {
6427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6428 "WDI API call before module is initialized - Fail request");
6429
Jeff Johnsone7245742012-09-05 17:12:55 -07006430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006431 }
6432
6433 /*------------------------------------------------------------------------
6434 Fill in Event data and post to the Main FSM
6435 ------------------------------------------------------------------------*/
6436 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006437 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6438 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6439 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006440 wdiEventData.pUserData = pUserData;
6441
6442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6443
6444}/*WDI_UpdateProbeRspTemplateReq*/
6445
6446/**
6447 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6448 to the NV memory.
6449
6450
6451 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6452 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006453
Jeff Johnson295189b2012-06-20 16:38:30 -07006454 wdiNvDownloadRspCb: callback for passing back the response of
6455 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006456
Jeff Johnson295189b2012-06-20 16:38:30 -07006457 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006458 callback
6459
Jeff Johnson295189b2012-06-20 16:38:30 -07006460 @see WDI_PostAssocReq
6461 @return Result of the function call
6462*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006463WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006464WDI_NvDownloadReq
6465(
6466 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6467 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6468 void* pUserData
6469)
6470{
6471 WDI_EventInfoType wdiEventData;
6472
6473 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006474 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 ------------------------------------------------------------------------*/
6476 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6477 {
6478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6479 "WDI API call before module is initialized - Fail request");
6480
Jeff Johnsone7245742012-09-05 17:12:55 -07006481 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 }
6483
6484 /*------------------------------------------------------------------------
6485 Fill in Event data and post to the Main FSM
6486 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006487 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6488 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6489 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6490 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006491 wdiEventData.pUserData = pUserData;
6492
6493 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6494
6495}/*WDI_NVDownloadReq*/
6496
Jeff Johnson295189b2012-06-20 16:38:30 -07006497/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006498 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006499 upper MAC wants to send Notice of Absence
6500 Upon the call of this API the WLAN DAL will
6501 pack and send the probe rsp template message to the
6502 lower RIVA sub-system if DAL is in state STARTED.
6503
6504 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006505 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006506
6507
Jeff Johnsone7245742012-09-05 17:12:55 -07006508 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006509 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006510
Jeff Johnson295189b2012-06-20 16:38:30 -07006511 wdiSendBeaconParamsRspCb: callback for passing back the
6512 response of the Send Beacon Params operation received
6513 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006514
Jeff Johnson295189b2012-06-20 16:38:30 -07006515 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 callback
6517
Jeff Johnson295189b2012-06-20 16:38:30 -07006518 @see WDI_AddBAReq
6519 @return Result of the function call
6520*/
6521WDI_Status
6522WDI_SetP2PGONOAReq
6523(
6524 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6525 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6526 void* pUserData
6527)
6528{
6529 WDI_EventInfoType wdiEventData;
6530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6531
6532 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006533 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006534 ------------------------------------------------------------------------*/
6535 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6536 {
6537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6538 "WDI API call before module is initialized - Fail request");
6539
Jeff Johnsone7245742012-09-05 17:12:55 -07006540 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006541 }
6542
6543 /*------------------------------------------------------------------------
6544 Fill in Event data and post to the Main FSM
6545 ------------------------------------------------------------------------*/
6546 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006547 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6548 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6549 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006550 wdiEventData.pUserData = pUserData;
6551
6552 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6553
6554}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006555
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306556#ifdef FEATURE_WLAN_TDLS
6557/**
6558 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6559 upper MAC wants to send TDLS Link Establish Request Parameters
6560 Upon the call of this API the WLAN DAL will
6561 pack and send the TDLS Link Establish Request message to the
6562 lower RIVA sub-system if DAL is in state STARTED.
6563
6564 In state BUSY this request will be queued. Request won't
6565 be allowed in any other state.
6566
6567
6568 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6569 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6570
6571 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6572 response of the TDLS Link Establish request received
6573 from the device
6574
6575 pUserData: user data will be passed back with the
6576 callback
6577
6578 @see
6579 @return Result of the function call
6580*/
6581WDI_Status
6582WDI_SetTDLSLinkEstablishReq
6583(
6584 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6585 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6586 void* pUserData
6587)
6588{
6589 WDI_EventInfoType wdiEventData;
6590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6591
6592 /*------------------------------------------------------------------------
6593 Sanity Check
6594 ------------------------------------------------------------------------*/
6595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6596 {
6597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6598 "WDI API call before module is initialized - Fail request");
6599
6600 return WDI_STATUS_E_NOT_ALLOWED;
6601 }
6602
6603 /*------------------------------------------------------------------------
6604 Fill in Event data and post to the Main FSM
6605 ------------------------------------------------------------------------*/
6606 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6607 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6608 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6609 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6610 wdiEventData.pUserData = pUserData;
6611
6612 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6613
6614}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306615
6616//tdlsoffchan
6617/**
6618 @brief WDI_SetTDLSChanSwitchReq will be called when the
6619 upper MAC wants to send TDLS Chan Switch Request Parameters
6620 Upon the call of this API the WLAN DAL will
6621 pack and send the TDLS Link Establish Request message to the
6622 lower RIVA sub-system if DAL is in state STARTED.
6623
6624 In state BUSY this request will be queued. Request won't
6625 be allowed in any other state.
6626
6627
6628 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6629 for Link Establishment (Used for TDLS Off Channel ...)
6630
6631 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6632 response of the TDLS Chan Switch request received
6633 from the device
6634
6635 pUserData: user data will be passed back with the
6636 callback
6637
6638 @see
6639 @return Result of the function call
6640*/
6641WDI_Status
6642WDI_SetTDLSChanSwitchReq
6643(
6644 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6645 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6646 void* pUserData
6647)
6648{
6649 WDI_EventInfoType wdiEventData;
6650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6651
6652 /*------------------------------------------------------------------------
6653 Sanity Check
6654 ------------------------------------------------------------------------*/
6655 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6656 {
6657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6658 "WDI API call before module is initialized - Fail request");
6659
6660 return WDI_STATUS_E_NOT_ALLOWED;
6661 }
6662
6663 /*------------------------------------------------------------------------
6664 Fill in Event data and post to the Main FSM
6665 ------------------------------------------------------------------------*/
6666 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6667 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6668 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6669 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6670 wdiEventData.pUserData = pUserData;
6671
6672 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6673
6674}/*WDI_SetTDLSChanSwitchReq*/
6675
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306676#endif
6677
Jeff Johnson295189b2012-06-20 16:38:30 -07006678/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006679 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006680 UMAC wanted to add STA self while opening any new session
6681 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006682 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006683
6684
Jeff Johnsone7245742012-09-05 17:12:55 -07006685 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006687
Jeff Johnson295189b2012-06-20 16:38:30 -07006688 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 callback
6690
6691 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006692 @return Result of the function call
6693*/
6694WDI_Status
6695WDI_AddSTASelfReq
6696(
6697 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6698 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6699 void* pUserData
6700)
6701{
6702 WDI_EventInfoType wdiEventData;
6703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6704
6705 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006706 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006707 ------------------------------------------------------------------------*/
6708 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6709 {
6710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6711 "WDI API call before module is initialized - Fail request");
6712
Jeff Johnsone7245742012-09-05 17:12:55 -07006713 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 }
6715
6716 /*------------------------------------------------------------------------
6717 Fill in Event data and post to the Main FSM
6718 ------------------------------------------------------------------------*/
6719 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006720 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6721 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6722 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006723 wdiEventData.pUserData = pUserData;
6724
6725 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6726
6727}/*WDI_AddSTASelfReq*/
6728
6729
Jeff Johnsone7245742012-09-05 17:12:55 -07006730#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006731/**
6732 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6733 the device of a successful add TSpec negotiation. HW
6734 needs to receive the TSpec Info from the UMAC in order
6735 to configure properly the QoS data traffic. Upon the
6736 call of this API the WLAN DAL will pack and send a HAL
6737 Add TS request message to the lower RIVA sub-system if
6738 DAL is in state STARTED.
6739
6740 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006741 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006742
6743 WDI_PostAssocReq must have been called.
6744
6745 @param wdiAddTsReqParams: the add TS parameters as specified by
6746 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006747
Jeff Johnson295189b2012-06-20 16:38:30 -07006748 wdiAddTsRspCb: callback for passing back the response of
6749 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006750
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006752 callback
6753
Jeff Johnson295189b2012-06-20 16:38:30 -07006754 @see WDI_PostAssocReq
6755 @return Result of the function call
6756*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006757WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006758WDI_AggrAddTSReq
6759(
6760 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6761 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6762 void* pUserData
6763)
6764{
6765 WDI_EventInfoType wdiEventData;
6766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6767
6768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006769 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006770 ------------------------------------------------------------------------*/
6771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6772 {
6773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6774 "WDI API call before module is initialized - Fail request");
6775
Jeff Johnsone7245742012-09-05 17:12:55 -07006776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 }
6778
6779 /*------------------------------------------------------------------------
6780 Fill in Event data and post to the Main FSM
6781 ------------------------------------------------------------------------*/
6782 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006783 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6784 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6785 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 wdiEventData.pUserData = pUserData;
6787
6788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6789
6790}/*WDI_AggrAddTSReq*/
6791
6792#endif /* WLAN_FEATURE_VOWIFI_11R */
6793
Jeff Johnson295189b2012-06-20 16:38:30 -07006794/**
6795 @brief WDI_FTMCommandReq
6796 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006797
6798 @param ftmCommandReq: FTM Command Body
6799 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006800 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006801
Jeff Johnson295189b2012-06-20 16:38:30 -07006802 @see
6803 @return Result of the function call
6804*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006805WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006806WDI_FTMCommandReq
6807(
6808 WDI_FTMCommandReqType *ftmCommandReq,
6809 WDI_FTMCommandRspCb ftmCommandRspCb,
6810 void *pUserData
6811)
6812{
6813 WDI_EventInfoType wdiEventData;
6814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6815
6816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006817 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006818 ------------------------------------------------------------------------*/
6819 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6820 {
6821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6822 "WDI API call before module is initialized - Fail request");
6823
Jeff Johnsone7245742012-09-05 17:12:55 -07006824 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 }
6826
6827 /*------------------------------------------------------------------------
6828 Fill in Event data and post to the Main FSM
6829 ------------------------------------------------------------------------*/
6830 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6831 wdiEventData.pEventData = (void *)ftmCommandReq;
6832 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6833 wdiEventData.pCBfnc = ftmCommandRspCb;
6834 wdiEventData.pUserData = pUserData;
6835
6836 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6837}
Jeff Johnson295189b2012-06-20 16:38:30 -07006838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006840
6841 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006842 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006843
6844
6845 @param pwdiResumeReqParams: as specified by
6846 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006847
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 wdiResumeReqRspCb: callback for passing back the response of
6849 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006850
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 callback
6853
6854 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006855 @return Result of the function call
6856*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006857WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006858WDI_HostResumeReq
6859(
6860 WDI_ResumeParamsType* pwdiResumeReqParams,
6861 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6862 void* pUserData
6863)
6864{
6865 WDI_EventInfoType wdiEventData;
6866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6867
6868 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006869 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 ------------------------------------------------------------------------*/
6871 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6872 {
6873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6874 "WDI API call before module is initialized - Fail request");
6875
Jeff Johnsone7245742012-09-05 17:12:55 -07006876 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 }
6878
6879 /*------------------------------------------------------------------------
6880 Fill in Event data and post to the Main FSM
6881 ------------------------------------------------------------------------*/
6882 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006883 wdiEventData.pEventData = pwdiResumeReqParams;
6884 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6885 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 wdiEventData.pUserData = pUserData;
6887
6888 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6889
6890}/*WDI_HostResumeReq*/
6891
6892/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006893 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006894
6895 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006896 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006897
6898
6899 @param pwdiDelStaSelfReqParams: as specified by
6900 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006901
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 wdiDelStaSelfRspCb: callback for passing back the response of
6903 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006904
Jeff Johnson295189b2012-06-20 16:38:30 -07006905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006906 callback
6907
Jeff Johnson295189b2012-06-20 16:38:30 -07006908 @see WDI_PostAssocReq
6909 @return Result of the function call
6910*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006911WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006912WDI_DelSTASelfReq
6913(
6914 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6915 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6916 void* pUserData
6917)
6918{
6919 WDI_EventInfoType wdiEventData;
6920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6921
6922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006923 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 ------------------------------------------------------------------------*/
6925 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6926 {
6927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6928 "WDI API call before module is initialized - Fail request");
6929
Jeff Johnsone7245742012-09-05 17:12:55 -07006930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006931 }
6932
6933 /*------------------------------------------------------------------------
6934 Fill in Event data and post to the Main FSM
6935 ------------------------------------------------------------------------*/
6936 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006937 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6938 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6939 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006940 wdiEventData.pUserData = pUserData;
6941
6942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6943
6944}/*WDI_AggrAddTSReq*/
6945
6946/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006947 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6948 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006949 Upon the call of this API the WLAN DAL will pack
6950 and send a HAL Set Tx Per Tracking request message to the
6951 lower RIVA sub-system if DAL is in state STARTED.
6952
6953 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006955
Jeff Johnsone7245742012-09-05 17:12:55 -07006956 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006958
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 pwdiSetTxPerTrackingRspCb: callback for passing back the
6960 response of the set Tx PER Tracking configurations operation received
6961 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006962
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006964 callback
6965
Jeff Johnson295189b2012-06-20 16:38:30 -07006966 @return Result of the function call
6967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006969WDI_SetTxPerTrackingReq
6970(
6971 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6972 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6973 void* pUserData
6974)
6975{
6976 WDI_EventInfoType wdiEventData;
6977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6978
6979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006980 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006981 ------------------------------------------------------------------------*/
6982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6983 {
6984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6985 "WDI API call before module is initialized - Fail request");
6986
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 }
6989
6990 /*------------------------------------------------------------------------
6991 Fill in Event data and post to the Main FSM
6992 ------------------------------------------------------------------------*/
6993 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006994 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006995 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006996 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006997 wdiEventData.pUserData = pUserData;
6998
6999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7000
7001}/*WDI_SetTxPerTrackingReq*/
7002
7003/**
7004 @brief WDI_SetTmLevelReq
7005 If HW Thermal condition changed, driver should react based on new
7006 HW thermal condition.
7007
7008 @param pwdiSetTmLevelReq: New thermal condition information
7009
7010 pwdiSetTmLevelRspCb: callback
7011
7012 usrData: user data will be passed back with the
7013 callback
7014
7015 @return Result of the function call
7016*/
7017WDI_Status
7018WDI_SetTmLevelReq
7019(
7020 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
7021 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
7022 void *usrData
7023)
7024{
7025 WDI_EventInfoType wdiEventData;
7026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7027
7028 /*------------------------------------------------------------------------
7029 Sanity Check
7030 ------------------------------------------------------------------------*/
7031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7032 {
7033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7034 "WDI API call before module is initialized - Fail request");
7035
7036 return WDI_STATUS_E_NOT_ALLOWED;
7037 }
7038
7039 /*------------------------------------------------------------------------
7040 Fill in Event data and post to the Main FSM
7041 ------------------------------------------------------------------------*/
7042 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
7043 wdiEventData.pEventData = pwdiSetTmLevelReq;
7044 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
7045 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
7046 wdiEventData.pUserData = usrData;
7047
7048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7049}
7050
7051/**
7052 @brief WDI_HostSuspendInd
7053
7054 Suspend Indication from the upper layer will be sent
7055 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07007056
Jeff Johnson295189b2012-06-20 16:38:30 -07007057 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07007058
7059 @see
7060
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 @return Status of the request
7062*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007063WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07007064WDI_HostSuspendInd
7065(
7066 WDI_SuspendParamsType* pwdiSuspendIndParams
7067)
7068{
7069
7070 WDI_EventInfoType wdiEventData;
7071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7072
7073 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007074 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007075 ------------------------------------------------------------------------*/
7076 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7077 {
7078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7079 "WDI API call before module is initialized - Fail request");
7080
Jeff Johnsone7245742012-09-05 17:12:55 -07007081 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 }
7083
7084 /*------------------------------------------------------------------------
7085 Fill in Event data and post to the Main FSM
7086 ------------------------------------------------------------------------*/
7087 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 wdiEventData.pEventData = pwdiSuspendIndParams;
7089 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
7090 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007091 wdiEventData.pUserData = NULL;
7092
7093 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7094
7095}/*WDI_HostSuspendInd*/
7096
7097/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007098 @brief WDI_TrafficStatsInd
7099 Traffic Stats from the upper layer will be sent
7100 down to HAL
7101
7102 @param WDI_TrafficStatsIndType
7103
7104 @see
7105
7106 @return Status of the request
7107*/
7108WDI_Status
7109WDI_TrafficStatsInd
7110(
7111 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
7112)
7113{
7114
7115 WDI_EventInfoType wdiEventData;
7116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7117
7118 /*------------------------------------------------------------------------
7119 Sanity Check
7120 ------------------------------------------------------------------------*/
7121 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7122 {
7123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7124 "WDI API call before module is initialized - Fail request");
7125
7126 return WDI_STATUS_E_NOT_ALLOWED;
7127 }
7128
7129 /*------------------------------------------------------------------------
7130 Fill in Event data and post to the Main FSM
7131 ------------------------------------------------------------------------*/
7132 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
7133 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
7134 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
7135 wdiEventData.pCBfnc = NULL;
7136 wdiEventData.pUserData = NULL;
7137
7138 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7139
7140}/*WDI_TrafficStatsInd*/
7141
Chet Lanctot186b5732013-03-18 10:26:30 -07007142#ifdef WLAN_FEATURE_11W
7143/**
7144 @brief WDI_ExcludeUnencryptedInd
7145 Register with HAL to receive/drop unencrypted frames
7146
7147 @param WDI_ExcludeUnencryptIndType
7148
7149 @see
7150
7151 @return Status of the request
7152*/
7153WDI_Status
7154WDI_ExcludeUnencryptedInd
7155(
7156 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7157)
7158{
7159
7160 WDI_EventInfoType wdiEventData;
7161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7162
7163 /*------------------------------------------------------------------------
7164 Sanity Check
7165 ------------------------------------------------------------------------*/
7166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7167 {
7168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7169 "WDI API call before module is initialized - Fail request");
7170
7171 return WDI_STATUS_E_NOT_ALLOWED;
7172 }
7173
7174 /*------------------------------------------------------------------------
7175 Fill in Event data and post to the Main FSM
7176 ------------------------------------------------------------------------*/
7177 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7178 wdiEventData.pEventData = pWdiExcUnencParams;
7179 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7180 wdiEventData.pCBfnc = NULL;
7181 wdiEventData.pUserData = NULL;
7182
7183 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7184
7185}/*WDI_TrafficStatsInd*/
7186#endif
7187
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007188/**
Yue Mab9c86f42013-08-14 15:59:08 -07007189 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7190
7191 @param addPeriodicTxPtrnParams: Add Pattern parameters
7192
7193 @see
7194
7195 @return Status of the request
7196*/
7197WDI_Status
7198WDI_AddPeriodicTxPtrnInd
7199(
7200 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7201)
7202{
7203 WDI_EventInfoType wdiEventData;
7204
7205 /*-------------------------------------------------------------------------
7206 Sanity Check
7207 ------------------------------------------------------------------------*/
7208 if (eWLAN_PAL_FALSE == gWDIInitialized)
7209 {
7210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7211 "WDI API call before module is initialized - Fail request!");
7212
7213 return WDI_STATUS_E_NOT_ALLOWED;
7214 }
7215
7216 /*-------------------------------------------------------------------------
7217 Fill in Event data and post to the Main FSM
7218 ------------------------------------------------------------------------*/
7219 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7220 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7221 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7222 wdiEventData.pCBfnc = NULL;
7223 wdiEventData.pUserData = NULL;
7224
7225 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7226}
7227
7228/**
7229 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7230
7231 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7232
7233 @see
7234
7235 @return Status of the request
7236*/
7237WDI_Status
7238WDI_DelPeriodicTxPtrnInd
7239(
7240 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7241)
7242{
7243 WDI_EventInfoType wdiEventData;
7244
7245 /*-------------------------------------------------------------------------
7246 Sanity Check
7247 ------------------------------------------------------------------------*/
7248 if (eWLAN_PAL_FALSE == gWDIInitialized)
7249 {
7250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7251 "WDI API call before module is initialized - Fail request!");
7252
7253 return WDI_STATUS_E_NOT_ALLOWED;
7254 }
7255
7256 /*-------------------------------------------------------------------------
7257 Fill in Event data and post to the Main FSM
7258 ------------------------------------------------------------------------*/
7259 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7260 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7261 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7262 wdiEventData.pCBfnc = NULL;
7263 wdiEventData.pUserData = NULL;
7264
7265 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7266}
7267
7268/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 @brief WDI_HALDumpCmdReq
7270 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007271
7272 @param halDumpCmdReqParams: Hal Dump Command Body
7273 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007275
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 @see
7277 @return Result of the function call
7278*/
7279WDI_Status WDI_HALDumpCmdReq
7280(
7281 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7282 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7283 void *pUserData
7284)
7285{
7286 WDI_EventInfoType wdiEventData;
7287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7288
7289 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 ------------------------------------------------------------------------*/
7292 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7293 {
7294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7295 "WDI API call before module is initialized - Fail request");
7296
Jeff Johnsone7245742012-09-05 17:12:55 -07007297 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 }
7299
7300 /*------------------------------------------------------------------------
7301 Fill in Event data and post to the Main FSM
7302 ------------------------------------------------------------------------*/
7303 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7304 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7305 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7306 wdiEventData.pCBfnc = halDumpCmdRspCb;
7307 wdiEventData.pUserData = pUserData;
7308
7309 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7310}
7311
Jeff Johnsone7245742012-09-05 17:12:55 -07007312/*============================================================================
7313
Jeff Johnson295189b2012-06-20 16:38:30 -07007314 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007315
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 ============================================================================*/
7317
7318/**
7319 @brief Main FSM Start function for all states except BUSY
7320
Jeff Johnsone7245742012-09-05 17:12:55 -07007321
7322 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007323 wdiEV: event posted to the main DAL FSM
7324 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 structure
7326
Jeff Johnson295189b2012-06-20 16:38:30 -07007327 @see
7328 @return Result of the function call
7329*/
7330WDI_Status
7331WDI_PostMainEvent
7332(
Jeff Johnsone7245742012-09-05 17:12:55 -07007333 WDI_ControlBlockType* pWDICtx,
7334 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007336)
7337{
Jeff Johnsone7245742012-09-05 17:12:55 -07007338 WDI_Status wdiStatus;
7339 WDI_MainFuncType pfnWDIMainEvHdlr;
7340 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307341 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7343
7344 /*-------------------------------------------------------------------------
7345 Sanity check
7346 -------------------------------------------------------------------------*/
7347 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7348 ( wdiEV >= WDI_MAX_EVENT ))
7349 {
7350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7351 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7352 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007353 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007354 }
7355
7356 /*Access to the global state must be locked */
7357 wpalMutexAcquire(&pWDICtx->wptMutex);
7358
7359 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007360 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007361
7362 wdiOldState = pWDICtx->uGlobalState;
7363
7364 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007365 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7366 response comes from CCPU for the request sent by host:
7367 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 -07007368 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 -07007369 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007370 CCPU:
7371 don't change the state */
7372 if ( WDI_RESPONSE_EVENT != wdiEV)
7373 {
7374 /*Transition to BUSY State - the request is now being processed by the FSM,
7375 if the request fails we shall transition back to the old state, if not
7376 the request will manage its own state transition*/
7377 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7378 }
7379 /* If the state function associated with the EV is NULL it means that this
7380 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 {
7383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 }
7388 else
7389 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307390 if (!(failCnt & 0xF))
7391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007392 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307394 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007395 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 }
7397
7398 /* If a request handles itself well it will end up in a success or in a
7399 pending
7400 Success - means that the request was processed and the proper state
7401 transition already occurred or will occur when the resp is received
7402 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007403
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 Pending - means the request could not be processed at this moment in time
7405 because the FSM was already busy so no state transition or dequeueing
7406 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007407
Jeff Johnson295189b2012-06-20 16:38:30 -07007408 Success for synchronous case means that the transition may occur and
7409 processing of pending requests may continue - so it should go through
7410 and restores the state and continue processing queued requests*/
7411 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7412 ( WDI_STATUS_PENDING != wdiStatus ))
7413 {
7414 if ( WDI_RESPONSE_EVENT != wdiEV)
7415 {
7416 /*The request has failed or could not be processed - transition back to
7417 the old state - check to see if anything was queued and try to execute
7418 The dequeue logic should post a message to a thread and return - no
7419 actual processing can occur */
7420 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7421 }
7422 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007423
Jeff Johnson295189b2012-06-20 16:38:30 -07007424 }
7425
7426 /* we have completed processing the event */
7427 wpalMutexRelease(&pWDICtx->wptMutex);
7428
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007430
7431}/*WDI_PostMainEvent*/
7432
7433
7434/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007436--------------------------------------------------------------------------*/
7437/**
7438 @brief Main FSM Start function for all states except BUSY
7439
Jeff Johnsone7245742012-09-05 17:12:55 -07007440
7441 @param pWDICtx: pointer to the WLAN DAL context
7442 pEventData: pointer to the event information structure
7443
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 @see
7445 @return Result of the function call
7446*/
7447WDI_Status
7448WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007449(
Jeff Johnson295189b2012-06-20 16:38:30 -07007450 WDI_ControlBlockType* pWDICtx,
7451 WDI_EventInfoType* pEventData
7452)
7453{
7454
7455 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007456 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007457 ----------------------------------------------------------------------*/
7458 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7459 {
7460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007461 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007462 pWDICtx, pEventData);
7463 return WDI_STATUS_E_FAILURE;
7464 }
7465
7466 wpalMutexAcquire(&pWDICtx->wptMutex);
7467
7468 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 ----------------------------------------------------------------------*/
7471 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7472 {
7473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7474 "Control Transport not yet Open - queueing the request");
7475
7476 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007478
7479 wpalMutexRelease(&pWDICtx->wptMutex);
7480 return WDI_STATUS_PENDING;
7481 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007482
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 wpalMutexRelease(&pWDICtx->wptMutex);
7484
7485 /*Return Success*/
7486 return WDI_ProcessRequest( pWDICtx, pEventData );
7487
7488}/*WDI_MainStart*/
7489
7490/**
7491 @brief Main FSM Response function for state INIT
7492
Jeff Johnsone7245742012-09-05 17:12:55 -07007493
7494 @param pWDICtx: pointer to the WLAN DAL context
7495 pEventData: pointer to the event information structure
7496
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 @see
7498 @return Result of the function call
7499*/
7500WDI_Status
7501WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007502(
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 WDI_ControlBlockType* pWDICtx,
7504 WDI_EventInfoType* pEventData
7505)
7506{
7507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007509 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007511
7512 /*Return Success*/
7513 return WDI_STATUS_E_NOT_ALLOWED;
7514}/* WDI_MainRspInit */
7515
7516/**
7517 @brief Main FSM Close function for all states except BUSY
7518
Jeff Johnsone7245742012-09-05 17:12:55 -07007519
7520 @param pWDICtx: pointer to the WLAN DAL context
7521 pEventData: pointer to the event information structure
7522
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 @see
7524 @return Result of the function call
7525*/
7526WDI_Status
7527WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007528(
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 WDI_ControlBlockType* pWDICtx,
7530 WDI_EventInfoType* pEventData
7531)
7532{
7533
7534 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007535 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 ----------------------------------------------------------------------*/
7537 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7538 {
7539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007540 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 pWDICtx, pEventData);
7542 return WDI_STATUS_E_FAILURE;
7543 }
7544
7545 /*Return Success*/
7546 return WDI_ProcessRequest( pWDICtx, pEventData );
7547
7548}/*WDI_MainClose*/
7549/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007551--------------------------------------------------------------------------*/
7552/**
7553 @brief Main FSM Start function for state STARTED
7554
Jeff Johnsone7245742012-09-05 17:12:55 -07007555
7556 @param pWDICtx: pointer to the WLAN DAL context
7557 pEventData: pointer to the event information structure
7558
Jeff Johnson295189b2012-06-20 16:38:30 -07007559 @see
7560 @return Result of the function call
7561*/
7562WDI_Status
7563WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007564(
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 WDI_ControlBlockType* pWDICtx,
7566 WDI_EventInfoType* pEventData
7567)
7568{
7569 WDI_StartRspCb wdiStartRspCb = NULL;
7570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7571
7572 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 ----------------------------------------------------------------------*/
7575 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7576 {
7577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007578 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 pWDICtx, pEventData);
7580 return WDI_STATUS_E_FAILURE;
7581 }
7582
7583 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007584 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007585 ----------------------------------------------------------------------*/
7586 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007587 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007588
7589 wpalMutexAcquire(&pWDICtx->wptMutex);
7590
7591 /*Transition back to started because the post function transitioned us to
7592 busy*/
7593 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7594
7595 /*Check to see if any request is pending*/
7596 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007597
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 wpalMutexRelease(&pWDICtx->wptMutex);
7599
7600 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007601 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7602
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307604 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007605
7606 /*Return Success*/
7607 return WDI_STATUS_SUCCESS;
7608
7609}/*WDI_MainStartStarted*/
7610
7611/**
7612 @brief Main FSM Stop function for state STARTED
7613
Jeff Johnsone7245742012-09-05 17:12:55 -07007614
7615 @param pWDICtx: pointer to the WLAN DAL context
7616 pEventData: pointer to the event information structure
7617
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 @see
7619 @return Result of the function call
7620*/
7621WDI_Status
7622WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007623(
Jeff Johnson295189b2012-06-20 16:38:30 -07007624 WDI_ControlBlockType* pWDICtx,
7625 WDI_EventInfoType* pEventData
7626)
7627{
7628 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 ----------------------------------------------------------------------*/
7631 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7632 {
7633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007634 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 pWDICtx, pEventData);
7636 return WDI_STATUS_E_FAILURE;
7637 }
7638
7639 /*State at this point is BUSY - because we enter this state before posting
7640 an event to the FSM in order to prevent potential race conditions*/
7641
7642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7643 "Processing stop request in FSM");
7644
7645 /*Return Success*/
7646 return WDI_ProcessRequest( pWDICtx, pEventData );
7647
7648}/*WDI_MainStopStarted*/
7649/**
7650 @brief Main FSM Request function for state started
7651
Jeff Johnsone7245742012-09-05 17:12:55 -07007652
7653 @param pWDICtx: pointer to the WLAN DAL context
7654 pEventData: pointer to the event information structure
7655
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 @see
7657 @return Result of the function call
7658*/
7659WDI_Status
7660WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007661(
Jeff Johnson295189b2012-06-20 16:38:30 -07007662 WDI_ControlBlockType* pWDICtx,
7663 WDI_EventInfoType* pEventData
7664)
7665{
7666
7667 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 ----------------------------------------------------------------------*/
7670 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7671 {
7672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007673 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007674 pWDICtx, pEventData);
7675 return WDI_STATUS_E_FAILURE;
7676 }
7677
7678 /*State at this point is BUSY - because we enter this state before posting
7679 an event to the FSM in order to prevent potential race conditions*/
7680
7681 /*Return Success*/
7682 return WDI_ProcessRequest( pWDICtx, pEventData );
7683
7684}/*WDI_MainReqStarted*/
7685
7686/**
7687 @brief Main FSM Response function for all states except INIT
7688
Jeff Johnsone7245742012-09-05 17:12:55 -07007689
7690 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007691 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007692
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 @see
7694 @return Result of the function call
7695*/
7696WDI_Status
7697WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007698(
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 WDI_ControlBlockType* pWDICtx,
7700 WDI_EventInfoType* pEventData
7701)
7702{
Jeff Johnsone7245742012-09-05 17:12:55 -07007703 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007704 wpt_boolean expectedResponse;
7705
7706 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007707 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007708 ----------------------------------------------------------------------*/
7709 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7710 {
7711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007712 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007713 pWDICtx, pEventData);
7714 return WDI_STATUS_E_FAILURE;
7715 }
7716
7717 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7718 {
7719 /* we received an expected response */
7720 expectedResponse = eWLAN_PAL_TRUE;
7721
7722 /*We expect that we will transition to started after this processing*/
7723 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7724
7725 /* we are no longer expecting a response */
7726 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7727 }
7728 else
7729 {
7730 /* we received an indication or unexpected response */
7731 expectedResponse = eWLAN_PAL_FALSE;
7732 /* for indications no need to update state from what it is right
7733 now, unless it explicitly does it in the indication handler (say
7734 for device failure ind) */
7735 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7736 }
7737
7738 /*Process the response and indication */
7739 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7740
7741 /*Lock the CB as we are about to do a state transition*/
7742 wpalMutexAcquire(&pWDICtx->wptMutex);
7743
7744 /*Transition to the expected state after the response processing
7745 - this should always be started state with the following exceptions:
7746 1. processing of a failed start response
7747 2. device failure detected while processing response
7748 3. stop response received*/
7749 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007750
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 /*Dequeue request that may have been queued while we were waiting for the
7752 response */
7753 if ( expectedResponse )
7754 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 }
7757
7758 wpalMutexRelease(&pWDICtx->wptMutex);
7759
7760 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007762
7763}/*WDI_MainRsp*/
7764
7765/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007766 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007767--------------------------------------------------------------------------*/
7768/**
7769 @brief Main FSM Stop function for state STOPPED
7770
Jeff Johnsone7245742012-09-05 17:12:55 -07007771
7772 @param pWDICtx: pointer to the WLAN DAL context
7773 pEventData: pointer to the event information structure
7774
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 @see
7776 @return Result of the function call
7777*/
7778WDI_Status
7779WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007780(
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 WDI_ControlBlockType* pWDICtx,
7782 WDI_EventInfoType* pEventData
7783)
7784{
7785 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007786 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 ----------------------------------------------------------------------*/
7788 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7789 {
7790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007791 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 pWDICtx, pEventData);
7793 return WDI_STATUS_E_FAILURE;
7794 }
7795
7796 /*We should normally not get a STOP request if we are already stopped
7797 since we should normally be stopped by the UMAC. However in some
7798 error situations we put ourselves in the stopped state without the
7799 UMAC knowing, so when we get a STOP request in this state we still
7800 process it since we need to clean up the underlying state */
7801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7802 "Processing stop request while stopped in FSM");
7803
7804 /*Return Success*/
7805 return WDI_ProcessRequest( pWDICtx, pEventData );
7806
7807}/*WDI_MainStopStopped*/
7808
7809/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007811--------------------------------------------------------------------------*/
7812/**
7813 @brief Main FSM Start function for state BUSY
7814
Jeff Johnsone7245742012-09-05 17:12:55 -07007815
7816 @param pWDICtx: pointer to the WLAN DAL context
7817 pEventData: pointer to the event information structure
7818
Jeff Johnson295189b2012-06-20 16:38:30 -07007819 @see
7820 @return Result of the function call
7821*/
7822WDI_Status
7823WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007824(
Jeff Johnson295189b2012-06-20 16:38:30 -07007825 WDI_ControlBlockType* pWDICtx,
7826 WDI_EventInfoType* pEventData
7827)
7828{
7829 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 ----------------------------------------------------------------------*/
7832 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7833 {
7834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007835 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007836 pWDICtx, pEventData);
7837 return WDI_STATUS_E_FAILURE;
7838 }
7839
7840 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 ----------------------------------------------------------------------*/
7843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7844 "WDI Busy state - queue start request");
7845
7846 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007847 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007848
7849 /*Return Success*/
7850 return WDI_STATUS_PENDING;
7851}/*WDI_MainStartBusy*/
7852
7853/**
7854 @brief Main FSM Stop function for state BUSY
7855
Jeff Johnsone7245742012-09-05 17:12:55 -07007856
7857 @param pWDICtx: pointer to the WLAN DAL context
7858 pEventData: pointer to the event information structure
7859
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 @see
7861 @return Result of the function call
7862*/
7863WDI_Status
7864WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007865(
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 WDI_ControlBlockType* pWDICtx,
7867 WDI_EventInfoType* pEventData
7868)
7869{
7870 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 ----------------------------------------------------------------------*/
7873 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7874 {
7875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007876 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 pWDICtx, pEventData);
7878 return WDI_STATUS_E_FAILURE;
7879 }
7880
7881 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 ----------------------------------------------------------------------*/
7884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7885 "WDI Busy state - queue stop request");
7886
Jeff Johnsone7245742012-09-05 17:12:55 -07007887 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007889
Jeff Johnson295189b2012-06-20 16:38:30 -07007890}/*WDI_MainStopBusy*/
7891
7892/**
7893 @brief Main FSM Request function for state BUSY
7894
Jeff Johnsone7245742012-09-05 17:12:55 -07007895
7896 @param pWDICtx: pointer to the WLAN DAL context
7897 pEventData: pointer to the event information structure
7898
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 @see
7900 @return Result of the function call
7901*/
7902WDI_Status
7903WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007904(
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 WDI_ControlBlockType* pWDICtx,
7906 WDI_EventInfoType* pEventData
7907)
7908{
7909 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 ----------------------------------------------------------------------*/
7912 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7913 {
7914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007915 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 pWDICtx, pEventData);
7917 return WDI_STATUS_E_FAILURE;
7918 }
7919
7920 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007921 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007922 ----------------------------------------------------------------------*/
7923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7924 "WDI Busy state - queue request %d because waiting for response %d",
7925 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7926
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007929
Jeff Johnson295189b2012-06-20 16:38:30 -07007930}/*WDI_MainReqBusy*/
7931/**
7932 @brief Main FSM Close function for state BUSY
7933
Jeff Johnsone7245742012-09-05 17:12:55 -07007934
7935 @param pWDICtx: pointer to the WLAN DAL context
7936 pEventData: pointer to the event information structure
7937
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 @see
7939 @return Result of the function call
7940*/
7941WDI_Status
7942WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007943(
Jeff Johnson295189b2012-06-20 16:38:30 -07007944 WDI_ControlBlockType* pWDICtx,
7945 WDI_EventInfoType* pEventData
7946)
7947{
7948 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 ----------------------------------------------------------------------*/
7951 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7952 {
7953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007954 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 pWDICtx, pEventData);
7956 return WDI_STATUS_E_FAILURE;
7957 }
7958
7959 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 ----------------------------------------------------------------------*/
7962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7963 "WDI Busy state - queue close request");
7964
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007967
Jeff Johnson295189b2012-06-20 16:38:30 -07007968}/*WDI_MainCloseBusy*/
7969
7970/**
7971 @brief Main FSM Shutdown function for INIT & STARTED states
7972
7973
7974 @param pWDICtx: pointer to the WLAN DAL context
7975 pEventData: pointer to the event information structure
7976
7977 @see
7978 @return Result of the function call
7979*/
7980WDI_Status
7981WDI_MainShutdown
7982(
7983 WDI_ControlBlockType* pWDICtx,
7984 WDI_EventInfoType* pEventData
7985)
7986{
7987 /*--------------------------------------------------------------------
7988 Sanity Check
7989 ----------------------------------------------------------------------*/
7990 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7991 {
7992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007993 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 pWDICtx, pEventData);
7995 return WDI_STATUS_E_FAILURE;
7996 }
7997
7998 /*State at this point is BUSY - because we enter this state before posting
7999 an event to the FSM in order to prevent potential race conditions*/
8000
8001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
8002 "Processing shutdown request in FSM");
8003
8004 /*Return Success*/
8005 return WDI_ProcessRequest( pWDICtx, pEventData );
8006
8007}/*WDI_MainShutdown*/
8008
8009/**
8010 @brief Main FSM Shutdown function for BUSY state
8011
8012
8013 @param pWDICtx: pointer to the WLAN DAL context
8014 pEventData: pointer to the event information structure
8015
8016 @see
8017 @return Result of the function call
8018*/
8019WDI_Status
8020WDI_MainShutdownBusy
8021(
8022 WDI_ControlBlockType* pWDICtx,
8023 WDI_EventInfoType* pEventData
8024)
8025{
8026 /*--------------------------------------------------------------------
8027 Sanity Check
8028 ----------------------------------------------------------------------*/
8029 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8030 {
8031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008032 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 pWDICtx, pEventData);
8034 return WDI_STATUS_E_FAILURE;
8035 }
8036
8037 /* If you are waiting for a HAL response at this stage, you are not
8038 * going to get it. Riva is already shutdown/crashed.
8039 */
8040 wpalTimerStop(&gWDICb.wptResponseTimer);
8041
8042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
8043 "Processing shutdown request in FSM: Busy state ");
8044
8045 return WDI_ProcessRequest( pWDICtx, pEventData );
8046
8047}/*WDI_MainShutdownBusy*/
8048
8049
Jeff Johnsone7245742012-09-05 17:12:55 -07008050/*=======================================================================
8051
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07008053
Jeff Johnson295189b2012-06-20 16:38:30 -07008054*=======================================================================*/
8055
8056/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008057 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07008058========================================================================*/
8059/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008062
8063 @param pWDICtx: pointer to the WLAN DAL context
8064 pEventData: pointer to the event information structure
8065
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 @see
8067 @return Result of the function call
8068*/
8069WDI_Status
8070WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008071(
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 WDI_ControlBlockType* pWDICtx,
8073 WDI_EventInfoType* pEventData
8074)
8075{
8076 WDI_StartReqParamsType* pwdiStartParams = NULL;
8077 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 wpt_uint16 usDataOffset = 0;
8080 wpt_uint16 usSendSize = 0;
8081
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 tHalMacStartReqMsg halStartReq;
8083 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8085
8086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 -------------------------------------------------------------------------*/
8089 if (( NULL == pEventData ) ||
8090 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
8091 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
8092 {
8093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 }
8098
8099 /*-----------------------------------------------------------------------
8100 Get message buffer
8101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07008103 pwdiStartParams->usConfigBufferLen;
8104
Jeff Johnsone7245742012-09-05 17:12:55 -07008105 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 usLen,
8107 &pSendBuffer, &usDataOffset, &usSendSize))||
8108 ( usSendSize < (usDataOffset + usLen )))
8109 {
8110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008111 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 pEventData, pwdiStartParams, wdiStartRspCb);
8113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 }
8116
8117 /*-----------------------------------------------------------------------
8118 Fill in the message
8119 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008120 halStartReq.startReqParams.driverType =
8121 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07008122
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 halStartReq.startReqParams.uConfigBufferLen =
8124 pwdiStartParams->usConfigBufferLen;
8125 wpalMemoryCopy( pSendBuffer+usDataOffset,
8126 &halStartReq.startReqParams,
8127 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008128
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 usDataOffset += sizeof(halStartReq.startReqParams);
8130 wpalMemoryCopy( pSendBuffer+usDataOffset,
8131 pwdiStartParams->pConfigBuffer,
8132 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07008133
8134 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008136
8137 /*Save Low Level Ind CB and associated user data - it will be used further
8138 on when an indication is coming from the lower MAC*/
8139 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008141
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
8148
Jeff Johnsone7245742012-09-05 17:12:55 -07008149
Jeff Johnson295189b2012-06-20 16:38:30 -07008150}/*WDI_ProcessStartReq*/
8151
8152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008155
8156 @param pWDICtx: pointer to the WLAN DAL context
8157 pEventData: pointer to the event information structure
8158
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 @see
8160 @return Result of the function call
8161*/
8162WDI_Status
8163WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008164(
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 WDI_ControlBlockType* pWDICtx,
8166 WDI_EventInfoType* pEventData
8167)
8168{
8169 WDI_StopReqParamsType* pwdiStopParams = NULL;
8170 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008172 wpt_uint16 usDataOffset = 0;
8173 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07008174 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8177
8178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 -------------------------------------------------------------------------*/
8181 if (( NULL == pEventData ) ||
8182 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8183 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8184 {
8185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008187 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008188 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 }
8190
8191 /*-----------------------------------------------------------------------
8192 Get message buffer
8193 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 sizeof(halStopReq.stopReqParams),
8196 &pSendBuffer, &usDataOffset, &usSendSize))||
8197 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8198 {
8199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008200 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 pEventData, pwdiStopParams, wdiStopRspCb);
8202 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008203 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008204 }
8205
8206 /*-----------------------------------------------------------------------
8207 Fill in the message
8208 -----------------------------------------------------------------------*/
8209 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8210 pwdiStopParams->wdiStopReason);
8211
Jeff Johnsone7245742012-09-05 17:12:55 -07008212 wpalMemoryCopy( pSendBuffer+usDataOffset,
8213 &halStopReq.stopReqParams,
8214 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008215
8216 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008217 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008218
8219 /*! TO DO: stop the data services */
8220 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8221 {
8222 /*Stop the STA Table !UT- check this logic again
8223 It is safer to do it here than on the response - because a stop is imminent*/
8224 WDI_STATableStop(pWDICtx);
8225
8226 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008227 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8228 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008229 {
8230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8231 "WDI Init failed to reset power state event");
8232
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008234 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 }
8236 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008237 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8238 if( eWLAN_PAL_STATUS_SUCCESS != status )
8239 {
8240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008241 "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 -08008242 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008243 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008244 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008246 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008247 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008248 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8249 WDI_SET_POWER_STATE_TIMEOUT);
8250 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 {
Abhishek Singh5edbb9b2016-04-06 11:55:33 +05308252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 "WDI Init failed to wait on an event");
8254
Abhishek Singh5edbb9b2016-04-06 11:55:33 +05308255 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008256 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 }
8258 }
8259
8260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008263 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
8265
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008266fail:
8267 // Release the message buffer so we don't leak
8268 wpalMemoryFree(pSendBuffer);
8269
8270failRequest:
8271 //WDA should have failure check to avoid the memory leak
8272 return WDI_STATUS_E_FAILURE;
8273
Jeff Johnson295189b2012-06-20 16:38:30 -07008274}/*WDI_ProcessStopReq*/
8275
8276/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008277 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008279
8280 @param pWDICtx: pointer to the WLAN DAL context
8281 pEventData: pointer to the event information structure
8282
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 @see
8284 @return Result of the function call
8285*/
8286WDI_Status
8287WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008288(
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 WDI_ControlBlockType* pWDICtx,
8290 WDI_EventInfoType* pEventData
8291)
8292{
Jeff Johnsone7245742012-09-05 17:12:55 -07008293 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8295
8296 /*Lock control block for cleanup*/
8297 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008298
Jeff Johnson295189b2012-06-20 16:38:30 -07008299 /*Clear all pending request*/
8300 WDI_ClearPendingRequests(pWDICtx);
8301
8302 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008304
8305 /* Close Data transport*/
8306 /* FTM mode does not open Data Path */
8307 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8308 {
8309 WDTS_Close(pWDICtx);
8310 }
8311
8312 /*Close the STA Table !UT- check this logic again*/
8313 WDI_STATableClose(pWDICtx);
8314
8315 /*close the PAL */
8316 wptStatus = wpalClose(pWDICtx->pPALContext);
8317 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8318 {
8319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8320 "Failed to wpal Close %d", wptStatus);
8321 WDI_ASSERT(0);
8322 }
8323
8324 /*Transition back to init state*/
8325 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8326
8327 wpalMutexRelease(&pWDICtx->wptMutex);
8328
8329 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008331
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008333}/*WDI_ProcessCloseReq*/
8334
8335
8336/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008338===========================================================================*/
8339
8340/**
8341 @brief Process Init Scan Request function (called when Main FSM
8342 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008343
8344 @param pWDICtx: pointer to the WLAN DAL context
8345 pEventData: pointer to the event information structure
8346
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 @see
8348 @return Result of the function call
8349*/
8350WDI_Status
8351WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008352(
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 WDI_ControlBlockType* pWDICtx,
8354 WDI_EventInfoType* pEventData
8355)
8356{
8357 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8358 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008359 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 wpt_uint16 usDataOffset = 0;
8361 wpt_uint16 usSendSize = 0;
8362 wpt_uint8 i = 0;
8363
8364 tHalInitScanReqMsg halInitScanReqMsg;
8365
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 * It shold be removed once host and riva changes are in sync*/
8368 tHalInitScanConReqMsg halInitScanConReqMsg;
8369
8370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8371
8372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 -------------------------------------------------------------------------*/
8375 if (( NULL == pEventData ) ||
8376 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8377 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8378 {
8379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 }
8384
8385#if 0
8386 wpalMutexAcquire(&pWDICtx->wptMutex);
8387 /*-----------------------------------------------------------------------
8388 Check to see if SCAN is already in progress - if so reject the req
8389 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 -----------------------------------------------------------------------*/
8392 if ( pWDICtx->bScanInProgress )
8393 {
8394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8395 "Scan is already in progress - subsequent scan is not allowed"
8396 " until the first scan completes");
8397
8398 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 }
8401
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8403 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008404
8405 wpalMutexRelease(&pWDICtx->wptMutex);
8406#endif
Viral Modid86bde22012-12-10 13:09:21 -08008407 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 * It shold be removed once host and riva changes are in sync*/
8411 /*-----------------------------------------------------------------------
8412 Get message buffer
8413 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 sizeof(halInitScanConReqMsg.initScanParams),
8416 &pSendBuffer, &usDataOffset, &usSendSize))||
8417 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8418 {
8419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008420 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008421 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 }
8425
8426
8427 /*-----------------------------------------------------------------------
8428 Fill in the message
8429 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8432
8433 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8434 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8435
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008437 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008438 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8442
8443 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8444 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8445
Jeff Johnson295189b2012-06-20 16:38:30 -07008446 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8447 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008448
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8451
8452 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8453 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008455 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8456 }
8457
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 wpalMemoryCopy( pSendBuffer+usDataOffset,
8459 &halInitScanConReqMsg.initScanParams,
8460 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 }
8462 else
8463 {
8464 /*-----------------------------------------------------------------------
8465 Get message buffer
8466 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 sizeof(halInitScanReqMsg.initScanParams),
8469 &pSendBuffer, &usDataOffset, &usSendSize))||
8470 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8471 {
8472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008473 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 }
8478
8479
8480 /*-----------------------------------------------------------------------
8481 Fill in the message
8482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8485
8486 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8487 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8488
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008491 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008494 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8495
8496 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8497 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8498
Jeff Johnsone7245742012-09-05 17:12:55 -07008499 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008500 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8501
8502 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8503 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8506 }
8507
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 wpalMemoryCopy( pSendBuffer+usDataOffset,
8509 &halInitScanReqMsg.initScanParams,
8510 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 }
8512
8513 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008514 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008515
8516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8521
8522}/*WDI_ProcessInitScanReq*/
8523
8524/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008527
8528 @param pWDICtx: pointer to the WLAN DAL context
8529 pEventData: pointer to the event information structure
8530
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 @see
8532 @return Result of the function call
8533*/
8534WDI_Status
8535WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008536(
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 WDI_ControlBlockType* pWDICtx,
8538 WDI_EventInfoType* pEventData
8539)
8540{
8541 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8542 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 wpt_uint16 usDataOffset = 0;
8545 wpt_uint16 usSendSize = 0;
8546
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8549
8550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 -------------------------------------------------------------------------*/
8553 if (( NULL == pEventData ) ||
8554 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8555 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8556 {
8557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 }
8562
8563#if 0
8564 wpalMutexAcquire(&pWDICtx->wptMutex);
8565 /*-----------------------------------------------------------------------
8566 Check to see if SCAN is already in progress - start scan is only
8567 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008570 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8572 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8573 {
8574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8575 "Scan start not allowed in this state %d %d",
8576 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008577
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008579 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 }
8581
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008583
8584 wpalMutexRelease(&pWDICtx->wptMutex);
8585#endif
8586
8587 /*-----------------------------------------------------------------------
8588 Get message buffer
8589 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008590 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008591 sizeof(halStartScanReqMsg.startScanParams),
8592 &pSendBuffer, &usDataOffset, &usSendSize))||
8593 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8594 {
8595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008596 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 }
8601
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008604 wpalMemoryCopy( pSendBuffer+usDataOffset,
8605 &halStartScanReqMsg.startScanParams,
8606 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008607
8608 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008609 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008610
8611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008612 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8616}/*WDI_ProcessStartScanReq*/
8617
8618
8619/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008622
8623 @param pWDICtx: pointer to the WLAN DAL context
8624 pEventData: pointer to the event information structure
8625
Jeff Johnson295189b2012-06-20 16:38:30 -07008626 @see
8627 @return Result of the function call
8628*/
8629WDI_Status
8630WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008631(
Jeff Johnson295189b2012-06-20 16:38:30 -07008632 WDI_ControlBlockType* pWDICtx,
8633 WDI_EventInfoType* pEventData
8634)
8635{
8636 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8637 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 wpt_uint16 usDataOffset = 0;
8640 wpt_uint16 usSendSize = 0;
8641
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8644
8645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 -------------------------------------------------------------------------*/
8648 if (( NULL == pEventData ) ||
8649 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8650 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8651 {
8652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 }
8657
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8659 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 * forwarded to HAL and result in hang*/
8661#if 0
8662 wpalMutexAcquire(&pWDICtx->wptMutex);
8663 /*-----------------------------------------------------------------------
8664 Check to see if SCAN is already in progress - end scan is only
8665 allowed when a scan is ongoing and the state of the scan procedure
8666 is started
8667 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8670 {
8671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8672 "End start not allowed in this state %d %d",
8673 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008674
Jeff Johnson295189b2012-06-20 16:38:30 -07008675 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 }
8678
Jeff Johnsone7245742012-09-05 17:12:55 -07008679 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008680
8681 wpalMutexRelease(&pWDICtx->wptMutex);
8682#endif
8683
8684 /*-----------------------------------------------------------------------
8685 Get message buffer
8686 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 sizeof(halEndScanReqMsg.endScanParams),
8689 &pSendBuffer, &usDataOffset, &usSendSize))||
8690 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8691 {
8692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008693 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 }
8698
8699 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8700
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 wpalMemoryCopy( pSendBuffer+usDataOffset,
8702 &halEndScanReqMsg.endScanParams,
8703 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008704
8705 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008707
8708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8713}/*WDI_ProcessEndScanReq*/
8714
8715
8716/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008718 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008719
8720 @param pWDICtx: pointer to the WLAN DAL context
8721 pEventData: pointer to the event information structure
8722
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 @see
8724 @return Result of the function call
8725*/
8726WDI_Status
8727WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008728(
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 WDI_ControlBlockType* pWDICtx,
8730 WDI_EventInfoType* pEventData
8731)
8732{
8733 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8734 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 wpt_uint16 usDataOffset = 0;
8737 wpt_uint16 usSendSize = 0;
8738 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008739 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8742
8743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 -------------------------------------------------------------------------*/
8746 if (( NULL == pEventData ) ||
8747 ( NULL == pEventData->pEventData) ||
8748 ( NULL == pEventData->pCBfnc))
8749 {
8750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008754 }
8755
8756 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8757 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8759 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 * forwarded to HAL and result in hang*/
8761#if 0
8762 wpalMutexAcquire(&pWDICtx->wptMutex);
8763 /*-----------------------------------------------------------------------
8764 Check to see if SCAN is already in progress
8765 Finish scan gets invoked any scan states. ie. abort scan
8766 It should be allowed in any states.
8767 -----------------------------------------------------------------------*/
8768 if ( !pWDICtx->bScanInProgress )
8769 {
8770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8771 "Finish start not allowed in this state %d",
8772 pWDICtx->bScanInProgress );
8773
8774 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 }
8777
8778 /*-----------------------------------------------------------------------
8779 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008782 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8783 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 wpalMutexRelease(&pWDICtx->wptMutex);
8785#endif
8786
8787 if ( pWDICtx->bInBmps )
8788 {
8789 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008790 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8791 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8792 {
8793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008794 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008795 WDI_ASSERT(0);
8796 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 }
8798
8799 /*-----------------------------------------------------------------------
8800 Get message buffer
8801 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 sizeof(halFinishScanReqMsg.finishScanParams),
8804 &pSendBuffer, &usDataOffset, &usSendSize))||
8805 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8806 {
8807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008808 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 }
8813
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8816
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8819
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8822
8823 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8824 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8825
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8832
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8835
8836 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8837 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8840 }
8841
8842 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8843 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8844
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 wpalMemoryCopy( pSendBuffer+usDataOffset,
8846 &halFinishScanReqMsg.finishScanParams,
8847 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008848
8849 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008851
8852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008853 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8857}/*WDI_ProcessFinishScanReq*/
8858
8859
8860/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008862==========================================================================*/
8863/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 @brief Process BSS Join for a given Session
8865
8866 @param pWDICtx: pointer to the WLAN DAL context
8867 pEventData: pointer to the event information structure
8868
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 @see
8870 @return Result of the function call
8871*/
8872WDI_Status
8873WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008874(
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 WDI_ControlBlockType* pWDICtx,
8876 WDI_JoinReqParamsType* pwdiJoinParams,
8877 WDI_JoinRspCb wdiJoinRspCb,
8878 void* pUserData
8879)
8880{
8881 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 wpt_uint16 usDataOffset = 0;
8884 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008886
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8889
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008890 wpalMutexAcquire(&pWDICtx->wptMutex);
8891
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 /*------------------------------------------------------------------------
8893 Check to see if we have any session with this BSSID already stored, we
8894 should not
8895 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008896 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8897 pwdiJoinParams->wdiReqInfo.macBSSID,
8898 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008899
8900 if ( NULL != pBSSSes )
8901 {
8902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008903 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8904 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008905
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008906 /*reset the bAssociationInProgress otherwise the next
8907 *join request will be queued*/
8908 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8909 wpalMutexRelease(&pWDICtx->wptMutex);
8910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 }
8912
Jeff Johnson295189b2012-06-20 16:38:30 -07008913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 if ( NULL == pBSSSes )
8918 {
8919
8920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8921 "DAL has no free sessions - cannot run another join");
8922
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008923 /*reset the bAssociationInProgress otherwise the next
8924 *join request will be queued*/
8925 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 }
8929
8930 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008931 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8932 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 WDI_MAC_ADDR_LEN);
8934
8935 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008938
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 wpalMutexRelease(&pWDICtx->wptMutex);
8940
8941 /*-----------------------------------------------------------------------
8942 Get message buffer
8943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 sizeof(halJoinReqMsg.joinReqParams),
8946 &pSendBuffer, &usDataOffset, &usSendSize))||
8947 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8948 {
8949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008950 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008951 pUserData, pwdiJoinParams, wdiJoinRspCb);
8952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 }
8955
8956 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008958
8959 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008960 pwdiJoinParams->wdiReqInfo.macSTASelf,
8961 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008962
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8965
8966 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8967
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008968#ifdef WLAN_FEATURE_VOWIFI
8969 halJoinReqMsg.joinReqParams.maxTxPower =
8970 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8971#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8974#endif
8975
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8978 wdiSecondaryChannelOffset);
8979
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 wpalMemoryCopy( pSendBuffer+usDataOffset,
8981 &halJoinReqMsg.joinReqParams,
8982 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008983
8984 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008986
8987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8991 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008992
8993}/*WDI_ProcessBSSSessionJoinReq*/
8994
8995/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008998
8999 @param pWDICtx: pointer to the WLAN DAL context
9000 pEventData: pointer to the event information structure
9001
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 @see
9003 @return Result of the function call
9004*/
9005WDI_Status
9006WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009007(
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 WDI_ControlBlockType* pWDICtx,
9009 WDI_EventInfoType* pEventData
9010)
9011{
9012 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9013 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
9014 WDI_JoinRspCb wdiJoinRspCb = NULL;
9015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9016
9017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009019 -------------------------------------------------------------------------*/
9020 if (( NULL == pEventData ) ||
9021 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
9022 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
9023 {
9024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009029
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 /*-------------------------------------------------------------------------
9031 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 -------------------------------------------------------------------------*/
9034 wpalMutexAcquire(&pWDICtx->wptMutex);
9035
9036 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
9037 {
9038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9039 "Association is currently in progress, queueing new join req");
9040
9041 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 pwdiJoinParams->wdiReqInfo.macBSSID);
9044
9045 wpalMutexRelease(&pWDICtx->wptMutex);
9046
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 }
9049
9050 /*Starting a new association */
9051 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
9052 wpalMutexRelease(&pWDICtx->wptMutex);
9053
9054 /*Process the Join Request*/
9055 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
9056 wdiJoinRspCb,pEventData->pUserData);
9057
9058}/*WDI_ProcessJoinReq*/
9059
9060
9061/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009062 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009064
9065 @param pWDICtx: pointer to the WLAN DAL context
9066 pEventData: pointer to the event information structure
9067
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 @see
9069 @return Result of the function call
9070*/
9071WDI_Status
9072WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009073(
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 WDI_ControlBlockType* pWDICtx,
9075 WDI_EventInfoType* pEventData
9076)
9077{
9078 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
9079 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 wpt_uint16 uMsgSize = 0;
9083 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 wpt_uint16 usDataOffset = 0;
9085 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009087
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9090
9091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 -------------------------------------------------------------------------*/
9094 if (( NULL == pEventData ) ||
9095 ( NULL == pEventData->pEventData ) ||
9096 ( NULL == pEventData->pCBfnc ))
9097 {
9098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 }
9103
Abhishek Singh6927fa02014-06-27 17:19:55 +05309104 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009105 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
9106 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
9107 /*-------------------------------------------------------------------------
9108 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 -------------------------------------------------------------------------*/
9111 wpalMutexAcquire(&pWDICtx->wptMutex);
9112
9113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9117 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
9118 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009119
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 {
9122#ifdef WLAN_FEATURE_VOWIFI_11R
9123 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 if ( NULL == pBSSSes )
9128 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009129
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9131 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009132
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009136
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009138 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9139 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009141
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9145#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 * Request in case of IBSS*/
9148 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
9149 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
9150 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
9151 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
9152 {
9153 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 if ( NULL == pBSSSes )
9158 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009159
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9161 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009162
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009164 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009166
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9169 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009171
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9175 }
9176 else
9177 {
9178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9180 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9181 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9182
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 /* for IBSS testing */
9184 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 }
9187#endif
9188 }
9189
9190 /*------------------------------------------------------------------------
9191 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 ------------------------------------------------------------------------*/
9194 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9195 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9197 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9198 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9199 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009200
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
9203 wpalMutexRelease(&pWDICtx->wptMutex);
9204
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 }
9207
9208 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9210 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 sizeof(pWDICtx->wdiCachedConfigBssReq));
9212
9213 wpalMutexRelease(&pWDICtx->wptMutex);
9214
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9216#ifdef WLAN_FEATURE_11AC
9217 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009218 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 else
9220#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009221 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009222
9223 /*-----------------------------------------------------------------------
9224 Get message buffer
9225 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9228 ( usSendSize < (usDataOffset + uMsgSize )))
9229 {
9230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009231 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 }
9236
9237 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009238#ifdef WLAN_FEATURE_11AC
9239 if (WDI_getFwWlanFeatCaps(DOT11AC))
9240 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9241 &pwdiConfigBSSParams->wdiReqInfo);
9242 else
9243#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 &pwdiConfigBSSParams->wdiReqInfo);
9246
9247 /* Need to fill in the STA Index to invalid, since at this point we have not
9248 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009250
9251 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9253
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009254#ifdef WLAN_FEATURE_11AC
9255 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9256 wpalMemoryCopy( pSendBuffer+usDataOffset,
9257 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9258 uMsgSize);
9259 }else
9260#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009261 {
9262 if ( uMsgSize <= sizeof(tConfigBssParams) )
9263 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009264 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009265 &halConfigBssReqMsg.uBssParams.configBssParams,
9266 uMsgSize);
9267 }
9268 else
9269 {
9270 return WDI_STATUS_E_FAILURE;
9271 }
9272 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009273
9274 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309276 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9281 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 WDI_CONFIG_BSS_RESP);
9283
9284}/*WDI_ProcessConfigBSSReq*/
9285
9286
9287/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009288 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009290
9291 @param pWDICtx: pointer to the WLAN DAL context
9292 pEventData: pointer to the event information structure
9293
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 @see
9295 @return Result of the function call
9296*/
9297WDI_Status
9298WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009299(
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 WDI_ControlBlockType* pWDICtx,
9301 WDI_EventInfoType* pEventData
9302)
9303{
9304 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9305 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 wpt_uint16 usDataOffset = 0;
9310 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009312
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9315
9316 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 -------------------------------------------------------------------------*/
9319 if (( NULL == pEventData ) ||
9320 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9321 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9322 {
9323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009324 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009327 }
9328
9329 /*-------------------------------------------------------------------------
9330 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 -------------------------------------------------------------------------*/
9333 wpalMutexAcquire(&pWDICtx->wptMutex);
9334
9335 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9339 pwdiDelBSSParams->ucBssIdx,
9340 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009341
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 {
9344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 "%s: BSS does not yet exist. ucBssIdx %d",
9346 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009347
9348 wpalMutexRelease(&pWDICtx->wptMutex);
9349
9350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009352
9353 /*------------------------------------------------------------------------
9354 Check if this BSS is being currently processed or queued,
9355 if queued - queue the new request as well
9356 ------------------------------------------------------------------------*/
9357 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9360 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9361 __func__, pwdiDelBSSParams->ucBssIdx);
9362
9363 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9364
9365 wpalMutexRelease(&pWDICtx->wptMutex);
9366
9367 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009369
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 /*-----------------------------------------------------------------------
9371 If we receive a Del BSS request for an association that is already in
9372 progress, it indicates that the assoc has failed => we no longer have
9373 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 -----------------------------------------------------------------------*/
9376 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9377 {
9378 /*We can switch to false here because even if a subsequent Join comes in
9379 it will only be processed when DAL transitions out of BUSY state which
9380 happens when the Del BSS request comes */
9381 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9382
9383 /*Former association is complete - prepare next pending assoc for
9384 processing */
9385 WDI_DequeueAssocRequest(pWDICtx);
9386 }
9387
9388 wpalMutexRelease(&pWDICtx->wptMutex);
9389 /*-----------------------------------------------------------------------
9390 Get message buffer
9391 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 sizeof(halBssReqMsg.deleteBssParams),
9394 &pSendBuffer, &usDataOffset, &usSendSize))||
9395 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9396 {
9397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009398 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 }
9403
9404 /*Fill in the message request structure*/
9405
9406 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009407 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009408
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 wpalMemoryCopy( pSendBuffer+usDataOffset,
9410 &halBssReqMsg.deleteBssParams,
9411 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009412
9413 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009415
Jeff Johnsone7245742012-09-05 17:12:55 -07009416
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9422
Jeff Johnsone7245742012-09-05 17:12:55 -07009423
Jeff Johnson295189b2012-06-20 16:38:30 -07009424}/*WDI_ProcessDelBSSReq*/
9425
9426/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009429
9430 @param pWDICtx: pointer to the WLAN DAL context
9431 pEventData: pointer to the event information structure
9432
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 @see
9434 @return Result of the function call
9435*/
9436WDI_Status
9437WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009438(
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 WDI_ControlBlockType* pWDICtx,
9440 WDI_EventInfoType* pEventData
9441)
9442{
9443 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9444 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 wpt_uint16 usDataOffset = 0;
9449 wpt_uint16 usSendSize = 0;
9450 wpt_uint16 uMsgSize = 0;
9451 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009453
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9456
9457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 -------------------------------------------------------------------------*/
9460 if (( NULL == pEventData ) ||
9461 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9462 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9463 {
9464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 }
9469
9470 /*-------------------------------------------------------------------------
9471 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 -------------------------------------------------------------------------*/
9474 wpalMutexAcquire(&pWDICtx->wptMutex);
9475
9476 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9480 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9481 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009482
9483 if ( NULL == pBSSSes )
9484 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9486 "%s: Association sequence for this BSS does not yet exist - "
9487 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9488 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009489
9490 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 }
9493
9494 /*------------------------------------------------------------------------
9495 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 ------------------------------------------------------------------------*/
9498 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9499 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9501 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9502 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009503
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009505
9506 wpalMutexRelease(&pWDICtx->wptMutex);
9507
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 }
9510
9511 /*-----------------------------------------------------------------------
9512 If Post Assoc was not yet received - the current association must
9513 be in progress
9514 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009515 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9517 {
9518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9519 "Association sequence for this BSS association no longer in "
9520 "progress - not allowed");
9521
9522 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 }
9525
9526 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 -----------------------------------------------------------------------*/
9529 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9530 {
9531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9532 "Post Assoc not allowed before JOIN - failing request");
9533
9534 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 }
9537
9538 wpalMutexRelease(&pWDICtx->wptMutex);
9539
9540 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9541 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9542 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9547 ( usSendSize < (usDataOffset + uMsgSize )))
9548 {
9549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009550 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009551 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 }
9555
9556 /*Copy the STA parameters */
9557 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9558 &pwdiPostAssocParams->wdiSTAParams );
9559
9560 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 WDI_STATableFindStaidByAddr(pWDICtx,
9563 pwdiPostAssocParams->wdiSTAParams.macSTA,
9564 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9565 {
9566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009567 MAC_ADDRESS_STR
9568 ": This station does not exist in the WDI Station Table",
9569 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009571 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 }
9574
9575 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 pBSSSes->ucBSSIdx;
9578
9579 /*Copy the BSS parameters */
9580 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9581 &pwdiPostAssocParams->wdiBSSParams);
9582
9583 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 WDI_STATableFindStaidByAddr(pWDICtx,
9586 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 {
9589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009590 MAC_ADDRESS_STR
9591 ": This station does not exist in the WDI Station Table",
9592 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009594 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 }
9597
9598 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 pBSSSes->ucBSSIdx;
9601
Jeff Johnsone7245742012-09-05 17:12:55 -07009602
9603 wpalMemoryCopy( pSendBuffer+usDataOffset,
9604 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9605 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009606
9607 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9608
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9610 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9611 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009612
Jeff Johnsone7245742012-09-05 17:12:55 -07009613
Jeff Johnson295189b2012-06-20 16:38:30 -07009614 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009616
Jeff Johnsone7245742012-09-05 17:12:55 -07009617
9618 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009620 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009621
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309622 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9628
Jeff Johnsone7245742012-09-05 17:12:55 -07009629
Jeff Johnson295189b2012-06-20 16:38:30 -07009630}/*WDI_ProcessPostAssocReq*/
9631
9632/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009635
9636 @param pWDICtx: pointer to the WLAN DAL context
9637 pEventData: pointer to the event information structure
9638
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 @see
9640 @return Result of the function call
9641*/
9642WDI_Status
9643WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009644(
Jeff Johnson295189b2012-06-20 16:38:30 -07009645 WDI_ControlBlockType* pWDICtx,
9646 WDI_EventInfoType* pEventData
9647)
9648{
9649 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9650 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 wpt_uint16 usDataOffset = 0;
9655 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009656 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9658
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9661
9662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 -------------------------------------------------------------------------*/
9665 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9666 ( NULL == pEventData->pCBfnc ))
9667 {
9668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 }
9673
9674 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9675 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9676 /*-------------------------------------------------------------------------
9677 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 -------------------------------------------------------------------------*/
9680 wpalMutexAcquire(&pWDICtx->wptMutex);
9681
9682 /*------------------------------------------------------------------------
9683 Find the BSS for which the request is made and identify WDI session
9684 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9686 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 &macBSSID))
9688 {
9689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009690 "This station does not exist in the WDI Station Table %d",
9691 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 }
9695
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9697 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9700 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9701 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009702
9703 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009705 }
9706
9707 /*------------------------------------------------------------------------
9708 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 ------------------------------------------------------------------------*/
9711 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9712 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9714 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9715 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009716
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 }
9721
9722 wpalMutexRelease(&pWDICtx->wptMutex);
9723 /*-----------------------------------------------------------------------
9724 Get message buffer
9725 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 sizeof(halDelStaReqMsg.delStaParams),
9728 &pSendBuffer, &usDataOffset, &usSendSize))||
9729 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9730 {
9731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009732 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009733 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 }
9737
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9739 wpalMemoryCopy( pSendBuffer+usDataOffset,
9740 &halDelStaReqMsg.delStaParams,
9741 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009742
9743 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009745
9746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9751
9752}/*WDI_ProcessDelSTAReq*/
9753
9754
9755/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009757==========================================================================*/
9758/**
9759 @brief Process Set BSS Key Request function (called when Main FSM
9760 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009761
9762 @param pWDICtx: pointer to the WLAN DAL context
9763 pEventData: pointer to the event information structure
9764
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 @see
9766 @return Result of the function call
9767*/
9768WDI_Status
9769WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009770(
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 WDI_ControlBlockType* pWDICtx,
9772 WDI_EventInfoType* pEventData
9773)
9774{
9775 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9776 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009780 wpt_uint16 usDataOffset = 0;
9781 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9784 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309785 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009786
9787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9788
9789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 -------------------------------------------------------------------------*/
9792 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9793 ( NULL == pEventData->pCBfnc ))
9794 {
9795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 }
9800
9801 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9802 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9803 /*-------------------------------------------------------------------------
9804 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 -------------------------------------------------------------------------*/
9807 wpalMutexAcquire(&pWDICtx->wptMutex);
9808
9809 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9813 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9814 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009815
Jeff Johnsone7245742012-09-05 17:12:55 -07009816 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009817 {
9818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009819 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9820 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009821
9822 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 }
9825
9826 /*------------------------------------------------------------------------
9827 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 ------------------------------------------------------------------------*/
9830 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9831 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9833 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9834 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009835
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009837 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 }
9840
9841
9842 wpalMutexRelease(&pWDICtx->wptMutex);
9843 /*-----------------------------------------------------------------------
9844 Get message buffer
9845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9848 &pSendBuffer, &usDataOffset, &usSendSize))||
9849 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9850 {
9851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009852 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 }
9857
9858 /*-----------------------------------------------------------------------
9859 Copy the Key parameters into the HAL message
9860 -----------------------------------------------------------------------*/
9861
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9866
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9869
9870 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9871 keyIndex++)
9872 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009873 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009874 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9875 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9876 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9877 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9878 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309879
9880 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9881 {
9882 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9883 {
9884 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9885 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9886 }
9887
9888 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9889 {
9890 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9891 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9892 }
9893
9894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9895 "%s: Negated Keys", __func__);
9896 }
9897 else
9898 {
9899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9900 "%s: No change in Keys", __func__);
9901 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309904 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9905 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9906 WDI_MAX_KEY_LENGTH);
9907 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009911 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309912 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009913
9914 wpalMemoryCopy( pSendBuffer+usDataOffset,
9915 &halSetBssKeyReqMsg.setBssKeyParams,
9916 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009917
9918 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009920
9921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9925 wdiSetBSSKeyRspCb, pEventData->pUserData,
9926 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009927
9928}/*WDI_ProcessSetBssKeyReq*/
9929
9930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009933
9934 @param pWDICtx: pointer to the WLAN DAL context
9935 pEventData: pointer to the event information structure
9936
Jeff Johnson295189b2012-06-20 16:38:30 -07009937 @see
9938 @return Result of the function call
9939*/
9940WDI_Status
9941WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009942(
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 WDI_ControlBlockType* pWDICtx,
9944 WDI_EventInfoType* pEventData
9945)
9946{
9947 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9948 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 wpt_uint16 usDataOffset = 0;
9953 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9957
9958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 -------------------------------------------------------------------------*/
9961 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9962 ( NULL == pEventData->pCBfnc ))
9963 {
9964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 }
9969
9970 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9971 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9972 /*-------------------------------------------------------------------------
9973 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 -------------------------------------------------------------------------*/
9976 wpalMutexAcquire(&pWDICtx->wptMutex);
9977
9978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9982 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9983 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009984
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 {
9987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009988 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9989 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009990
9991 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 }
9994
9995 /*------------------------------------------------------------------------
9996 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009997 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009998 ------------------------------------------------------------------------*/
9999 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10000 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10002 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10003 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010004
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 }
10009
10010
10011 wpalMutexRelease(&pWDICtx->wptMutex);
10012
10013 /*-----------------------------------------------------------------------
10014 Get message buffer
10015 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010017 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
10018 &pSendBuffer, &usDataOffset, &usSendSize))||
10019 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
10020 {
10021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010022 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
10024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010026 }
10027 /*-----------------------------------------------------------------------
10028 Copy the Key parameters into the HAL message
10029 -----------------------------------------------------------------------*/
10030 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
10031
Jeff Johnsone7245742012-09-05 17:12:55 -070010032 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010033 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
10034
10035 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
10036
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
10039
Jeff Johnsone7245742012-09-05 17:12:55 -070010040 wpalMemoryCopy( pSendBuffer+usDataOffset,
10041 &halRemoveBssKeyReqMsg.removeBssKeyParams,
10042 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010043
10044 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010046
10047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010053}/*WDI_ProcessRemoveBssKeyReq*/
10054
10055/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010056 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010058
10059 @param pWDICtx: pointer to the WLAN DAL context
10060 pEventData: pointer to the event information structure
10061
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 @see
10063 @return Result of the function call
10064*/
10065WDI_Status
10066WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010067(
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 WDI_ControlBlockType* pWDICtx,
10069 WDI_EventInfoType* pEventData
10070)
10071{
10072 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10073 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10074 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010075 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010076 wpt_uint16 usDataOffset = 0;
10077 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010078 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010079 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010081 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10082 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010083 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010084
10085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10086
10087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 -------------------------------------------------------------------------*/
10090 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10091 ( NULL == pEventData->pCBfnc ))
10092 {
10093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 }
10098
10099 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10100 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10101 /*-------------------------------------------------------------------------
10102 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 -------------------------------------------------------------------------*/
10105 wpalMutexAcquire(&pWDICtx->wptMutex);
10106
10107 /*------------------------------------------------------------------------
10108 Find the BSS for which the request is made and identify WDI session
10109 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010110 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10111 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 &macBSSID))
10113 {
10114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010115 "This station does not exist in the WDI Station Table %d",
10116 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010119 }
10120
Jeff Johnsone7245742012-09-05 17:12:55 -070010121 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10122 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10125 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10126 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010127
10128 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010131
Jeff Johnson295189b2012-06-20 16:38:30 -070010132 /*------------------------------------------------------------------------
10133 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 ------------------------------------------------------------------------*/
10136 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10137 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10139 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10140 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010141
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 }
10146
10147
10148 wpalMutexRelease(&pWDICtx->wptMutex);
10149 /*-----------------------------------------------------------------------
10150 Get message buffer
10151 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10154 &pSendBuffer, &usDataOffset, &usSendSize))||
10155 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10156 {
10157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010158 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 }
10163 /*-----------------------------------------------------------------------
10164 Copy the STA Key parameters into the HAL message
10165 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10168
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10171
10172 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10173
10174 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10175
10176 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10177
Jeff Johnson295189b2012-06-20 16:38:30 -070010178 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10179 keyIndex++)
10180 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10183 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10184 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10185 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10186 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010187
10188 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10189 {
10190 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10191 {
10192 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10193 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10194 }
10195
10196 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10197 {
10198 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10199 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10200 }
10201
10202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10203 "%s: Negated Keys", __func__);
10204 }
10205 else
10206 {
10207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10208 "%s: No change in Keys", __func__);
10209 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010212 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10213 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10214 WDI_MAX_KEY_LENGTH);
10215 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010220 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010221
Jeff Johnsone7245742012-09-05 17:12:55 -070010222 wpalMemoryCopy( pSendBuffer+usDataOffset,
10223 &halSetStaKeyReqMsg.setStaKeyParams,
10224 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010225
10226 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010228 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010230 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010231 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10233 wdiSetSTAKeyRspCb, pEventData->pUserData,
10234 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010235
10236}/*WDI_ProcessSetSTAKeyReq*/
10237
10238/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010241
10242 @param pWDICtx: pointer to the WLAN DAL context
10243 pEventData: pointer to the event information structure
10244
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 @see
10246 @return Result of the function call
10247*/
10248WDI_Status
10249WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010250(
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 WDI_ControlBlockType* pWDICtx,
10252 WDI_EventInfoType* pEventData
10253)
10254{
10255 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10256 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10257 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010258 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010259 wpt_uint16 usDataOffset = 0;
10260 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 wpt_macAddr macBSSID;
10263 wpt_uint8 ucCurrentBSSSesIdx;
10264 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10266
10267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 -------------------------------------------------------------------------*/
10270 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10271 ( NULL == pEventData->pCBfnc ))
10272 {
10273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 }
10278
10279 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10280 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10281 /*-------------------------------------------------------------------------
10282 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010283 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 -------------------------------------------------------------------------*/
10285 wpalMutexAcquire(&pWDICtx->wptMutex);
10286
10287 /*------------------------------------------------------------------------
10288 Find the BSS for which the request is made and identify WDI session
10289 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10291 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 &macBSSID))
10293 {
10294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010295 "This station does not exist in the WDI Station Table %d",
10296 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 }
10300
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10302 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10305 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10306 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010307
10308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010309 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010310 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010311
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 /*------------------------------------------------------------------------
10313 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 ------------------------------------------------------------------------*/
10316 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10317 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10319 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10320 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010321
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010323 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010325 }
10326
10327
10328
10329 wpalMutexRelease(&pWDICtx->wptMutex);
10330 /*-----------------------------------------------------------------------
10331 Get message buffer
10332 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10335 &pSendBuffer, &usDataOffset, &usSendSize))||
10336 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10337 {
10338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010339 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010340 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 }
10344
10345 /*-----------------------------------------------------------------------
10346 Copy the Key parameters into the HAL message
10347 -----------------------------------------------------------------------*/
10348
Jeff Johnsone7245742012-09-05 17:12:55 -070010349 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10351
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010353 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10354
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10357
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10360
Jeff Johnsone7245742012-09-05 17:12:55 -070010361 wpalMemoryCopy( pSendBuffer+usDataOffset,
10362 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10363 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010364
10365 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010366 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010367
10368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010369 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010374
10375}/*WDI_ProcessRemoveSTAKeyReq*/
10376
10377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010380
10381 @param pWDICtx: pointer to the WLAN DAL context
10382 pEventData: pointer to the event information structure
10383
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 @see
10385 @return Result of the function call
10386*/
10387WDI_Status
10388WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010389(
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 WDI_ControlBlockType* pWDICtx,
10391 WDI_EventInfoType* pEventData
10392)
10393{
10394 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10395 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10396 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 wpt_uint16 usDataOffset = 0;
10399 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010403 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10404 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010405 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010406
10407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10408
10409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010411 -------------------------------------------------------------------------*/
10412 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10413 ( NULL == pEventData->pCBfnc ))
10414 {
10415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 }
10420
10421 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10422 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10423 /*-------------------------------------------------------------------------
10424 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 -------------------------------------------------------------------------*/
10427 wpalMutexAcquire(&pWDICtx->wptMutex);
10428
10429 /*------------------------------------------------------------------------
10430 Find the BSS for which the request is made and identify WDI session
10431 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10433 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 &macBSSID))
10435 {
10436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010437 "This station does not exist in the WDI Station Table %d",
10438 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 }
10442
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10444 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 {
10446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010447 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010449
10450 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010452 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010453
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 /*------------------------------------------------------------------------
10455 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010456 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010457 ------------------------------------------------------------------------*/
10458 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10459 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10461 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10462 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010463
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 }
10468
10469
10470 wpalMutexRelease(&pWDICtx->wptMutex);
10471 /*-----------------------------------------------------------------------
10472 Get message buffer
10473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10476 &pSendBuffer, &usDataOffset, &usSendSize))||
10477 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10478 {
10479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010480 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 }
10485 /*-----------------------------------------------------------------------
10486 Copy the STA Key parameters into the HAL message
10487 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10490
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010492 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10493
10494 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10495
10496 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10497
10498 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10499
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10501 keyIndex++)
10502 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010503 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010504 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10505 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10506 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10507 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10508 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010509
10510 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10511 {
10512 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10513 {
10514 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10515 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10516 }
10517
10518 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10519 {
10520 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10521 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10522 }
10523
10524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10525 "%s: Negated Keys", __func__);
10526 }
10527 else
10528 {
10529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10530 "%s: No change in Keys", __func__);
10531 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010534 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10535 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10536 WDI_MAX_KEY_LENGTH);
10537 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010542 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 wpalMemoryCopy( pSendBuffer+usDataOffset,
10544 &halSetStaKeyReqMsg.setStaKeyParams,
10545 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010546
10547 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010549
10550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10554 wdiSetSTAKeyRspCb, pEventData->pUserData,
10555 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010556
10557}/*WDI_ProcessSetSTABcastKeyReq*/
10558
10559/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010562
10563 @param pWDICtx: pointer to the WLAN DAL context
10564 pEventData: pointer to the event information structure
10565
Jeff Johnson295189b2012-06-20 16:38:30 -070010566 @see
10567 @return Result of the function call
10568*/
10569WDI_Status
10570WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010571(
Jeff Johnson295189b2012-06-20 16:38:30 -070010572 WDI_ControlBlockType* pWDICtx,
10573 WDI_EventInfoType* pEventData
10574)
10575{
10576 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10577 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10578 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010580 wpt_uint16 usDataOffset = 0;
10581 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 wpt_macAddr macBSSID;
10584 wpt_uint8 ucCurrentBSSSesIdx;
10585 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10587
10588 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 -------------------------------------------------------------------------*/
10591 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10592 ( NULL == pEventData->pCBfnc ))
10593 {
10594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010595 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 }
10599
10600 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10601 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10602 /*-------------------------------------------------------------------------
10603 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010604 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010605 -------------------------------------------------------------------------*/
10606 wpalMutexAcquire(&pWDICtx->wptMutex);
10607
10608 /*------------------------------------------------------------------------
10609 Find the BSS for which the request is made and identify WDI session
10610 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010611 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10612 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 &macBSSID))
10614 {
10615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010616 "This station does not exist in the WDI Station Table %d",
10617 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010620 }
10621
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10623 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10626 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10627 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010628
10629 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010632
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 /*------------------------------------------------------------------------
10634 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 ------------------------------------------------------------------------*/
10637 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10638 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10640 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10641 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010642
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 }
10647
10648
10649
10650 wpalMutexRelease(&pWDICtx->wptMutex);
10651 /*-----------------------------------------------------------------------
10652 Get message buffer
10653 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010654 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010655 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10656 &pSendBuffer, &usDataOffset, &usSendSize))||
10657 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10658 {
10659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010660 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010661 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010664 }
10665
10666 /*-----------------------------------------------------------------------
10667 Copy the Key parameters into the HAL message
10668 -----------------------------------------------------------------------*/
10669
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10672
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10675
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10678
Jeff Johnsone7245742012-09-05 17:12:55 -070010679 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010680 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10681
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 wpalMemoryCopy( pSendBuffer+usDataOffset,
10683 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10684 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010685
10686 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010688
10689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010691 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010692 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010693 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010694 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010695
10696}/*WDI_ProcessRemoveSTABcastKeyReq*/
10697
10698/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010699 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010700==========================================================================*/
10701/**
10702 @brief Process Add TSpec Request function (called when Main FSM
10703 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010704
10705 @param pWDICtx: pointer to the WLAN DAL context
10706 pEventData: pointer to the event information structure
10707
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 @see
10709 @return Result of the function call
10710*/
10711WDI_Status
10712WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010713(
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 WDI_ControlBlockType* pWDICtx,
10715 WDI_EventInfoType* pEventData
10716)
10717{
10718 WDI_AddTSReqParamsType* pwdiAddTSParams;
10719 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 wpt_uint16 usDataOffset = 0;
10724 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 wpt_macAddr macBSSID;
10727 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010728
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10730
10731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 -------------------------------------------------------------------------*/
10734 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10735 ( NULL == pEventData->pCBfnc ))
10736 {
10737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010738 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 }
10742
10743 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10744 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10745 /*-------------------------------------------------------------------------
10746 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 -------------------------------------------------------------------------*/
10749 wpalMutexAcquire(&pWDICtx->wptMutex);
10750
10751 /*------------------------------------------------------------------------
10752 Find the BSS for which the request is made and identify WDI session
10753 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10755 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 &macBSSID))
10757 {
10758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010759 "This station does not exist in the WDI Station Table %d",
10760 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010763 }
10764
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10766 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10769 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10770 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010771
10772 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010773 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010774 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010775
Jeff Johnson295189b2012-06-20 16:38:30 -070010776 /*------------------------------------------------------------------------
10777 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 ------------------------------------------------------------------------*/
10780 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10781 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10783 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10784 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010785
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 }
10790
10791 wpalMutexRelease(&pWDICtx->wptMutex);
10792 /*-----------------------------------------------------------------------
10793 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010795 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010796 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10797 sizeof(halAddTsParams),
10798 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 &usSendSize))||
10800 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10801 {
10802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010803 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 }
10808
10809 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10810 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10811
10812 //TSPEC IE
10813 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10814 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010823 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010828 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010833 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010843 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010844 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10845
10846 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010851 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010852 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010857 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010858 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10861
10862 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010863 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010866 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10867
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 wpalMemoryCopy( pSendBuffer+usDataOffset,
10869 &halAddTsParams,
10870 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010871
10872 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010874
10875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010876 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010877 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010881}/*WDI_ProcessAddTSpecReq*/
10882
10883
10884/**
10885 @brief Process Del TSpec Request function (called when Main FSM
10886 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010887
10888 @param pWDICtx: pointer to the WLAN DAL context
10889 pEventData: pointer to the event information structure
10890
Jeff Johnson295189b2012-06-20 16:38:30 -070010891 @see
10892 @return Result of the function call
10893*/
10894WDI_Status
10895WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010896(
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 WDI_ControlBlockType* pWDICtx,
10898 WDI_EventInfoType* pEventData
10899)
10900{
10901 WDI_DelTSReqParamsType* pwdiDelTSParams;
10902 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010903 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 wpt_uint16 usDataOffset = 0;
10907 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010908 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10910
10911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 -------------------------------------------------------------------------*/
10914 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10915 ( NULL == pEventData->pCBfnc ))
10916 {
10917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010921 }
10922
10923 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10924 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10925
10926 /*-------------------------------------------------------------------------
10927 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 -------------------------------------------------------------------------*/
10930 wpalMutexAcquire(&pWDICtx->wptMutex);
10931
10932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10936 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10937 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010938
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010940 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10942 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10943 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10944
Jeff Johnson295189b2012-06-20 16:38:30 -070010945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 }
10948
10949 /*------------------------------------------------------------------------
10950 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 ------------------------------------------------------------------------*/
10953 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10954 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10956 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10957 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010958
Jeff Johnsone7245742012-09-05 17:12:55 -070010959 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 }
10963
10964
10965 wpalMutexRelease(&pWDICtx->wptMutex);
10966 /*-----------------------------------------------------------------------
10967 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010969 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010970 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010971 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10972 &pSendBuffer, &usDataOffset, &usSendSize))||
10973 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10974 {
10975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010976 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 }
10981
Jeff Johnsone7245742012-09-05 17:12:55 -070010982 wpalMemoryCopy( pSendBuffer+usDataOffset,
10983 &pwdiDelTSParams->wdiDelTSInfo,
10984 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010985
10986 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010987 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010988
10989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010990 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10993 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010994}/*WDI_ProcessDelTSpecReq*/
10995
10996/**
10997 @brief Process Update EDCA Params Request function (called when
10998 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010999
11000 @param pWDICtx: pointer to the WLAN DAL context
11001 pEventData: pointer to the event information structure
11002
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 @see
11004 @return Result of the function call
11005*/
11006WDI_Status
11007WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011008(
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 WDI_ControlBlockType* pWDICtx,
11010 WDI_EventInfoType* pEventData
11011)
11012{
11013 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
11014 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011015 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011016 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011017 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011018 wpt_uint16 usDataOffset = 0;
11019 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011020 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11022
11023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011025 -------------------------------------------------------------------------*/
11026 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11027 ( NULL == pEventData->pCBfnc ))
11028 {
11029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 }
11034
11035 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
11036 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
11037 /*-------------------------------------------------------------------------
11038 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011040 -------------------------------------------------------------------------*/
11041 wpalMutexAcquire(&pWDICtx->wptMutex);
11042
11043 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
11047 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
11048 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011049
Jeff Johnsone7245742012-09-05 17:12:55 -070011050 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011051 {
11052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
11054 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011055
11056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011057 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 }
11059
11060 /*------------------------------------------------------------------------
11061 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011062 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 ------------------------------------------------------------------------*/
11064 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11065 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11067 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
11068 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011069
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011072 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011073 }
11074
11075
11076 wpalMutexRelease(&pWDICtx->wptMutex);
11077 /*-----------------------------------------------------------------------
11078 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011081 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011082 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
11083 &pSendBuffer, &usDataOffset, &usSendSize))||
11084 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
11085 {
11086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011087 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
11089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011091 }
11092
Jeff Johnsone7245742012-09-05 17:12:55 -070011093 wpalMemoryCopy( pSendBuffer+usDataOffset,
11094 &pwdiUpdateEDCAParams->wdiEDCAInfo,
11095 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011096
11097 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011099
11100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011101 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011102 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011103 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11104 wdiUpdateEDCARspCb, pEventData->pUserData,
11105 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011106}/*WDI_ProcessUpdateEDCAParamsReq*/
11107
11108/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011109 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011110 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011111
11112 @param pWDICtx: pointer to the WLAN DAL context
11113 pEventData: pointer to the event information structure
11114
Jeff Johnson295189b2012-06-20 16:38:30 -070011115 @see
11116 @return Result of the function call
11117*/
11118WDI_Status
11119WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011120(
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 WDI_ControlBlockType* pWDICtx,
11122 WDI_EventInfoType* pEventData
11123)
11124{
11125 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
11126 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011129 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011130 wpt_uint16 usDataOffset = 0;
11131 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011133 wpt_macAddr macBSSID;
11134
11135 tAddBASessionReqMsg halAddBASessionReq;
11136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11137
11138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011139 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 -------------------------------------------------------------------------*/
11141 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11142 ( NULL == pEventData->pCBfnc ))
11143 {
11144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011145 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011146 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011148 }
11149
Jeff Johnsone7245742012-09-05 17:12:55 -070011150 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011151 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011152 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011153 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11154 /*-------------------------------------------------------------------------
11155 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011156 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011157 -------------------------------------------------------------------------*/
11158 wpalMutexAcquire(&pWDICtx->wptMutex);
11159
11160 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011162 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011163 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11164 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011165 &macBSSID))
11166 {
11167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011168 "This station does not exist in the WDI Station Table %d",
11169 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011170 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 }
11173
11174
Jeff Johnsone7245742012-09-05 17:12:55 -070011175 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011176
Jeff Johnsone7245742012-09-05 17:12:55 -070011177 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011178 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11180 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11181 __func__, MAC_ADDR_ARRAY(macBSSID));
11182
Jeff Johnson295189b2012-06-20 16:38:30 -070011183 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011184 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011185 }
11186
11187 /*------------------------------------------------------------------------
11188 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 ------------------------------------------------------------------------*/
11191 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11192 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11194 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11195 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011196
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 }
11201
11202
11203 wpalMutexRelease(&pWDICtx->wptMutex);
11204 /*-----------------------------------------------------------------------
11205 Get message buffer
11206 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11208 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011209 sizeof(halAddBASessionReq.addBASessionParams),
11210 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011212 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11213 {
11214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011215 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011216 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011219 }
11220
11221 halAddBASessionReq.addBASessionParams.staIdx =
11222 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11223 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11224 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11225 WDI_MAC_ADDR_LEN);
11226 halAddBASessionReq.addBASessionParams.baTID =
11227 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11228 halAddBASessionReq.addBASessionParams.baPolicy =
11229 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11230 halAddBASessionReq.addBASessionParams.baBufferSize =
11231 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11232 halAddBASessionReq.addBASessionParams.baTimeout =
11233 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11234 halAddBASessionReq.addBASessionParams.baSSN =
11235 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11236 halAddBASessionReq.addBASessionParams.baDirection =
11237 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11238
Jeff Johnsone7245742012-09-05 17:12:55 -070011239 wpalMemoryCopy( pSendBuffer+usDataOffset,
11240 &halAddBASessionReq.addBASessionParams,
11241 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011242
11243 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011244 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011245
11246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011247 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011248 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11250 wdiAddBASessionRspCb, pEventData->pUserData,
11251 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011252}/*WDI_ProcessAddBASessionReq*/
11253
11254/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011255 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011256 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011257
11258 @param pWDICtx: pointer to the WLAN DAL context
11259 pEventData: pointer to the event information structure
11260
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 @see
11262 @return Result of the function call
11263*/
11264WDI_Status
11265WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011266(
Jeff Johnson295189b2012-06-20 16:38:30 -070011267 WDI_ControlBlockType* pWDICtx,
11268 WDI_EventInfoType* pEventData
11269)
11270{
11271 WDI_DelBAReqParamsType* pwdiDelBAParams;
11272 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011273 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011274 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 wpt_uint16 usDataOffset = 0;
11277 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011278 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011279 wpt_macAddr macBSSID;
11280 tDelBAParams halDelBAparam;
11281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11282
11283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 -------------------------------------------------------------------------*/
11286 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11287 ( NULL == pEventData->pCBfnc ))
11288 {
11289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011293 }
11294
11295 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11296 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11297 /*-------------------------------------------------------------------------
11298 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011300 -------------------------------------------------------------------------*/
11301 wpalMutexAcquire(&pWDICtx->wptMutex);
11302
11303 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011305 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011306 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11307 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011308 &macBSSID))
11309 {
11310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011311 "This station does not exist in the WDI Station Table %d",
11312 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 }
11316
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011318
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11322 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11323 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011324
11325 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011327 }
11328
11329 /*------------------------------------------------------------------------
11330 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011331 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011332 ------------------------------------------------------------------------*/
11333 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11334 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11336 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11337 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011338
Jeff Johnsone7245742012-09-05 17:12:55 -070011339 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011340 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011341 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011342 }
11343
11344 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011345 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011346 sizeof(halDelBAparam),
11347 &pSendBuffer, &usDataOffset, &usSendSize))||
11348 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11349 {
11350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011351 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011355 }
11356
11357 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11358 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11359 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11360
Jeff Johnsone7245742012-09-05 17:12:55 -070011361 wpalMemoryCopy( pSendBuffer+usDataOffset,
11362 &halDelBAparam,
11363 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011364
11365 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011366 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011367
11368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11372 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011373}/*WDI_ProcessDelBAReq*/
11374
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011375#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011376
11377WDI_Status
11378WDI_ProcessTSMStatsReq
11379(
11380 WDI_ControlBlockType* pWDICtx,
11381 WDI_EventInfoType* pEventData
11382)
11383{
11384 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11385 WDI_TsmRspCb wdiTSMRspCb;
11386 wpt_uint8 ucCurrentBSSSesIdx = 0;
11387 WDI_BSSSessionType* pBSSSes = NULL;
11388 wpt_uint8* pSendBuffer = NULL;
11389 wpt_uint16 usDataOffset = 0;
11390 wpt_uint16 usSendSize = 0;
11391 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11392 tTsmStatsParams halTsmStatsReqParams = {0};
11393
11394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11395
11396 /*-------------------------------------------------------------------------
11397 Sanity check
11398 -------------------------------------------------------------------------*/
11399 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11400 ( NULL == pEventData->pCBfnc ))
11401 {
11402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011404 WDI_ASSERT(0);
11405 return WDI_STATUS_E_FAILURE;
11406 }
11407
11408 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11409 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11410 /*-------------------------------------------------------------------------
11411 Check to see if we are in the middle of an association, if so queue, if
11412 not it means it is free to process request
11413 -------------------------------------------------------------------------*/
11414 wpalMutexAcquire(&pWDICtx->wptMutex);
11415
11416 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11417 if ( NULL == pBSSSes )
11418 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11420 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11421 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011422
11423 wpalMutexRelease(&pWDICtx->wptMutex);
11424 return WDI_STATUS_E_NOT_ALLOWED;
11425 }
11426
11427 /*------------------------------------------------------------------------
11428 Check if this BSS is being currently processed or queued,
11429 if queued - queue the new request as well
11430 ------------------------------------------------------------------------*/
11431 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11432 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011434 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011436
11437 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11438 wpalMutexRelease(&pWDICtx->wptMutex);
11439 return wdiStatus;
11440 }
11441
11442 wpalMutexRelease(&pWDICtx->wptMutex);
11443 /*-----------------------------------------------------------------------
11444 Get message buffer
11445 ! TO DO : proper conversion into the HAL Message Request Format
11446 -----------------------------------------------------------------------*/
11447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11448 sizeof(halTsmStatsReqParams),
11449 &pSendBuffer, &usDataOffset, &usSendSize))||
11450 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11451 {
11452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011453 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011454 pEventData, pwdiTSMParams, wdiTSMRspCb);
11455 WDI_ASSERT(0);
11456 return WDI_STATUS_E_FAILURE;
11457 }
11458
11459 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11460 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11461 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11462 WDI_MAC_ADDR_LEN);
11463 wpalMemoryCopy( pSendBuffer+usDataOffset,
11464 &halTsmStatsReqParams,
11465 sizeof(halTsmStatsReqParams));
11466
11467 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11468 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11469
11470 /*-------------------------------------------------------------------------
11471 Send TSM Stats Request to HAL
11472 -------------------------------------------------------------------------*/
11473 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11474 wdiTSMRspCb, pEventData->pUserData,
11475 WDI_TSM_STATS_RESP);
11476}/*WDI_ProcessTSMStatsReq*/
11477
11478#endif
11479
11480
11481/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011483 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011484
11485 @param pWDICtx: pointer to the WLAN DAL context
11486 pEventData: pointer to the event information structure
11487
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 @see
11489 @return Result of the function call
11490*/
11491WDI_Status
11492WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011493(
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 WDI_ControlBlockType* pWDICtx,
11495 WDI_EventInfoType* pEventData
11496)
11497{
11498 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11499 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 wpt_uint16 usDataOffset = 0;
11502 wpt_uint16 usSendSize = 0;
11503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11504
11505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 -------------------------------------------------------------------------*/
11508 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11509 ( NULL == pEventData->pCBfnc ))
11510 {
11511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 }
11516
11517 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11518 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11519 /*-----------------------------------------------------------------------
11520 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011521 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011522 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11525 &pSendBuffer, &usDataOffset, &usSendSize))||
11526 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11527 {
11528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011529 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011530 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 }
11534
Jeff Johnsone7245742012-09-05 17:12:55 -070011535 wpalMemoryCopy( pSendBuffer+usDataOffset,
11536 &pwdiFlushAcParams->wdiFlushAcInfo,
11537 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011538
11539 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011541
11542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011543 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011545 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11546 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011547}/*WDI_ProcessFlushAcReq*/
11548
11549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011551 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011552
11553 @param pWDICtx: pointer to the WLAN DAL context
11554 pEventData: pointer to the event information structure
11555
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 @see
11557 @return Result of the function call
11558*/
11559WDI_Status
11560WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011561(
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 WDI_ControlBlockType* pWDICtx,
11563 WDI_EventInfoType* pEventData
11564)
11565{
11566 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11567 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011568 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011569 wpt_uint16 usDataOffset = 0;
11570 wpt_uint16 usSendSize = 0;
11571
11572 tBtAmpEventMsg haltBtAmpEventMsg;
11573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11574
11575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011577 -------------------------------------------------------------------------*/
11578 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11579 ( NULL == pEventData->pCBfnc ))
11580 {
11581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011585 }
11586
11587 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11588 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11589 /*-----------------------------------------------------------------------
11590 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011591 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11595 &pSendBuffer, &usDataOffset, &usSendSize))||
11596 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11597 {
11598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011599 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 }
11604
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 wpalMemoryCopy( pSendBuffer+usDataOffset,
11608 &haltBtAmpEventMsg.btAmpEventParams,
11609 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011610
11611 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011613
11614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11618 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011619}/*WDI_ProcessBtAmpEventReq*/
11620
11621/**
11622 @brief Process Add STA self Request function (called when Main FSM
11623 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011624
11625 @param pWDICtx: pointer to the WLAN DAL context
11626 pEventData: pointer to the event information structure
11627
Jeff Johnson295189b2012-06-20 16:38:30 -070011628 @see
11629 @return Result of the function call
11630*/
11631WDI_Status
11632WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011633(
Jeff Johnson295189b2012-06-20 16:38:30 -070011634 WDI_ControlBlockType* pWDICtx,
11635 WDI_EventInfoType* pEventData
11636)
11637{
11638 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11639 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011641 wpt_uint16 usDataOffset = 0;
11642 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011643 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11645
11646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011648 -------------------------------------------------------------------------*/
11649 if (( NULL == pEventData ) ||
11650 ( NULL == pEventData->pEventData) ||
11651 ( NULL == pEventData->pCBfnc))
11652 {
11653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011654 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011657 }
11658
Jeff Johnsone7245742012-09-05 17:12:55 -070011659 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011661 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011662 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11663 /*-----------------------------------------------------------------------
11664 Get message buffer
11665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11667 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011668 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011670 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 {
11672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011673 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011674 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 }
11678
11679 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011680 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011681 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11682
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011684 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11685 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11686 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11687 {
11688 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11689 }
11690 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11691 VOS_P2P_CLIENT_MODE) ||
11692 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11693 VOS_P2P_DEVICE))
11694 {
11695 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11696 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011698 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011699
11700 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011701 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011702
11703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011704 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11707 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11708 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011709}/*WDI_ProcessAddSTASelfReq*/
11710
11711
11712
11713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011714 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011715 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011716
11717 @param pWDICtx: pointer to the WLAN DAL context
11718 pEventData: pointer to the event information structure
11719
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 @see
11721 @return Result of the function call
11722*/
11723WDI_Status
11724WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011725(
Jeff Johnson295189b2012-06-20 16:38:30 -070011726 WDI_ControlBlockType* pWDICtx,
11727 WDI_EventInfoType* pEventData
11728)
11729{
11730 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11731 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011732 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 wpt_uint16 usDataOffset = 0;
11734 wpt_uint16 usSendSize = 0;
11735 tDelStaSelfParams halSetDelSelfSTAParams;
11736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11737
11738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 -------------------------------------------------------------------------*/
11741 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11742 ( NULL == pEventData->pCBfnc ))
11743 {
11744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011748 }
11749
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011751 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11752 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11753
11754 /*-----------------------------------------------------------------------
11755 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011756 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011757 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11760 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11763 {
11764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011765 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011766 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 }
11770
Jeff Johnsone7245742012-09-05 17:12:55 -070011771 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11773
Jeff Johnsone7245742012-09-05 17:12:55 -070011774 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11775 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011776
11777 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011778 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011779
11780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011781 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011783 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11784 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011785 WDI_DEL_STA_SELF_RESP);
11786
11787}
11788
Jeff Johnsone7245742012-09-05 17:12:55 -070011789#ifdef FEATURE_OEM_DATA_SUPPORT
11790/**
11791 @brief Process Start Oem Data Request function (called when Main
11792 FSM allows it)
11793
11794 @param pWDICtx: pointer to the WLAN DAL context
11795 pEventData: pointer to the event information structure
11796
11797 @see
11798 @return Result of the function call
11799*/
11800WDI_Status
11801WDI_ProcessStartOemDataReq
11802(
11803 WDI_ControlBlockType* pWDICtx,
11804 WDI_EventInfoType* pEventData
11805)
11806{
11807 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11808 WDI_oemDataRspCb wdiOemDataRspCb;
11809 wpt_uint8* pSendBuffer = NULL;
11810 wpt_uint16 usDataOffset = 0;
11811 wpt_uint16 usSendSize = 0;
11812 wpt_uint16 reqLen;
11813 tStartOemDataReqParams* halStartOemDataReqParams;
11814
11815 /*-------------------------------------------------------------------------
11816 Sanity check
11817 -------------------------------------------------------------------------*/
11818 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11819 ( NULL == pEventData->pCBfnc ))
11820 {
11821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011822 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 WDI_ASSERT(0);
11824 return WDI_STATUS_E_FAILURE;
11825 }
11826
11827 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11828 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11829
11830 /*-----------------------------------------------------------------------
11831 Get message buffer
11832 -----------------------------------------------------------------------*/
11833
11834 reqLen = sizeof(tStartOemDataReqParams);
11835
11836 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11837 WDI_START_OEM_DATA_REQ, reqLen,
11838 &pSendBuffer, &usDataOffset, &usSendSize))||
11839 (usSendSize < (usDataOffset + reqLen)))
11840 {
11841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011842 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011843 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11844 WDI_ASSERT(0);
11845 return WDI_STATUS_E_FAILURE;
11846 }
11847
11848 //copying WDI OEM DATA REQ PARAMS to shared memory
11849 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11850
11851 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11852 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11853
11854 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11855 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11856
11857 /*-------------------------------------------------------------------------
11858 Send Start Request to HAL
11859 -------------------------------------------------------------------------*/
11860 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11861 wdiOemDataRspCb, pEventData->pUserData,
11862 WDI_START_OEM_DATA_RESP);
11863}/*WDI_ProcessStartOemDataReq*/
11864#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011865
11866/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011869
11870 @param pWDICtx: pointer to the WLAN DAL context
11871 pEventData: pointer to the event information structure
11872
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 @see
11874 @return Result of the function call
11875*/
11876WDI_Status
11877WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011878(
Jeff Johnson295189b2012-06-20 16:38:30 -070011879 WDI_ControlBlockType* pWDICtx,
11880 WDI_EventInfoType* pEventData
11881)
11882{
11883 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11884 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011885 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011886 wpt_uint16 usDataOffset = 0;
11887 wpt_uint16 usSendSize = 0;
11888 tHalWlanHostResumeReqParam halResumeReqParams;
11889
11890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11891
11892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011894 -------------------------------------------------------------------------*/
11895 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11896 ( NULL == pEventData->pCBfnc ))
11897 {
11898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011899 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011902 }
11903
11904 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11905 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11906
11907 /*-----------------------------------------------------------------------
11908 Get message buffer
11909 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011910 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11912 &pSendBuffer, &usDataOffset, &usSendSize))||
11913 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11914 {
11915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011916 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011920 }
11921
Jeff Johnsone7245742012-09-05 17:12:55 -070011922 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011923 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011924
11925 wpalMemoryCopy( pSendBuffer+usDataOffset,
11926 &halResumeReqParams,
11927 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011928
11929 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011930 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011931
11932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011933 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11936 wdiHostResumeRspCb, pEventData->pUserData,
11937 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011938}/*WDI_ProcessHostResumeReq*/
11939
11940/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011943
11944 @param pWDICtx: pointer to the WLAN DAL context
11945 pEventData: pointer to the event information structure
11946
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 @see
11948 @return Result of the function call
11949*/
11950WDI_Status
11951WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011952(
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 WDI_ControlBlockType* pWDICtx,
11954 WDI_EventInfoType* pEventData
11955)
11956{
11957 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11958 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011959 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011960 wpt_uint16 usDataOffset = 0;
11961 wpt_uint16 usSendSize = 0;
11962 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11964
11965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011967 -------------------------------------------------------------------------*/
11968 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11969 ( NULL == pEventData->pCBfnc ))
11970 {
11971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011972 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 }
11976
11977 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11978 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011979
Jeff Johnson295189b2012-06-20 16:38:30 -070011980 /*-----------------------------------------------------------------------
11981 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 sizeof(halTxPerTrackingReqParam),
11986 &pSendBuffer, &usDataOffset, &usSendSize))||
11987 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11988 {
11989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011990 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011991 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011995
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11997 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11998 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11999 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070012000
12001 wpalMemoryCopy( pSendBuffer+usDataOffset,
12002 &halTxPerTrackingReqParam,
12003 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012004
12005 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012007
12008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012009 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012010 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12012 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012013}/*WDI_ProcessSetTxPerTrackingReq*/
12014
12015/*=========================================================================
12016 Indications
12017=========================================================================*/
12018
12019/**
12020 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012021
12022 @param pWDICtx: pointer to the WLAN DAL context
12023 pEventData: pointer to the event information structure
12024
Jeff Johnson295189b2012-06-20 16:38:30 -070012025 @see
12026 @return Result of the function call
12027*/
12028WDI_Status
12029WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070012030(
Jeff Johnson295189b2012-06-20 16:38:30 -070012031 WDI_ControlBlockType* pWDICtx,
12032 WDI_EventInfoType* pEventData
12033)
12034{
12035 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 wpt_uint16 usDataOffset = 0;
12038 wpt_uint16 usSendSize = 0;
12039 WDI_Status wdiStatus;
12040 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
12041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12042
12043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 -------------------------------------------------------------------------*/
12046 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12047 {
12048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012049 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012052 }
12053
12054 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
12055
12056 /*-----------------------------------------------------------------------
12057 Get message buffer
12058 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12060 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070012061 sizeof(halWlanSuspendIndparams),
12062 &pSendBuffer, &usDataOffset, &usSendSize))||
12063 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
12064 {
12065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12066 "Unable to get send buffer in Suspend Ind ");
12067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 }
12070
12071 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
12072 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
12073
Jeff Johnsone7245742012-09-05 17:12:55 -070012074 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070012075 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012076
Jeff Johnsone7245742012-09-05 17:12:55 -070012077 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
12078 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012079
12080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012082 -------------------------------------------------------------------------*/
12083 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012085
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012087 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12088}/*WDI_ProcessHostSuspendInd*/
12089
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080012090
12091
12092/**
12093 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
12094
12095 @param pWDICtx: pointer to the WLAN DAL context
12096 pEventData: pointer to the event information structure
12097
12098 @see
12099 @return Result of the function call
12100*/
12101WDI_Status
12102WDI_ProcessTrafficStatsInd
12103(
12104 WDI_ControlBlockType* pWDICtx,
12105 WDI_EventInfoType* pEventData
12106)
12107{
12108 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
12109 wpt_uint8* pSendBuffer = NULL;
12110 wpt_uint16 usDataOffset = 0;
12111 wpt_uint16 usSendSize = 0;
12112 WDI_Status wdiStatus;
12113 tStatsClassBIndParams* pStatsClassBIndParams;
12114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12115
12116 /*-------------------------------------------------------------------------
12117 Sanity check
12118 -------------------------------------------------------------------------*/
12119 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12120 {
12121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12122 "%s: Invalid parameters in Traffic Stats ind",__func__);
12123 WDI_ASSERT(0);
12124 return WDI_STATUS_E_FAILURE;
12125 }
12126
12127 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
12128
12129 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
12130 {
12131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12132 "%s: Invalid parameters in Traffic Stats ind",__func__);
12133 WDI_ASSERT(0);
12134 return WDI_STATUS_E_FAILURE;
12135 }
12136
12137 /*-----------------------------------------------------------------------
12138 Get message buffer
12139 -----------------------------------------------------------------------*/
12140 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12141 WDI_TRAFFIC_STATS_IND,
12142 sizeof(tStatsClassBIndParams),
12143 &pSendBuffer, &usDataOffset, &usSendSize))||
12144 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
12145 {
12146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12147 "Unable to get send buffer in Traffic Stats Ind ");
12148 WDI_ASSERT(0);
12149 return WDI_STATUS_E_FAILURE;
12150 }
12151
12152 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12153
12154 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12155
12156 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12157 pTrafficStatsIndParams->pTrafficStats,
12158 pTrafficStatsIndParams->length);
12159
12160 /*-------------------------------------------------------------------------
12161 Send Suspend Request to HAL
12162 -------------------------------------------------------------------------*/
12163 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12164 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12165
12166 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12167 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12168}/*WDI_ProcessTrafficStatsInd*/
12169
Chet Lanctot186b5732013-03-18 10:26:30 -070012170#ifdef WLAN_FEATURE_11W
12171/**
12172 @brief Process Exclude Unencrypted Indications function (called
12173 when Main FSM allows it)
12174
12175 @param pWDICtx: pointer to the WLAN DAL context
12176 pEventData: pointer to the event information structure
12177
12178 @see
12179 @return Result of the function call
12180*/
12181WDI_Status
12182WDI_ProcessExcludeUnencryptInd
12183(
12184 WDI_ControlBlockType* pWDICtx,
12185 WDI_EventInfoType* pEventData
12186)
12187{
12188 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12189 wpt_uint8* pSendBuffer = NULL;
12190 wpt_uint16 usDataOffset = 0;
12191 wpt_uint16 usSendSize = 0;
12192 WDI_Status wdiStatus;
12193 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12195
12196 /*-------------------------------------------------------------------------
12197 Sanity check
12198 -------------------------------------------------------------------------*/
12199 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12200 {
12201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12202 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12203 WDI_ASSERT(0);
12204 return WDI_STATUS_E_FAILURE;
12205 }
12206
12207 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12208
12209 /*-----------------------------------------------------------------------
12210 Get message buffer
12211 -----------------------------------------------------------------------*/
12212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12213 WDI_EXCLUDE_UNENCRYPTED_IND,
12214 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12215 &pSendBuffer, &usDataOffset, &usSendSize))||
12216 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12217 {
12218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12219 "Unable to get send buffer in Exclude Unencrypted Ind ");
12220 WDI_ASSERT(0);
12221 return WDI_STATUS_E_FAILURE;
12222 }
12223
12224 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12225
12226 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12227
12228 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12229 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12230
12231 /*-------------------------------------------------------------------------
12232 Send Suspend Request to HAL
12233 -------------------------------------------------------------------------*/
12234 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12235 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12236
12237 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12238 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12239}/*WDI_ProcessExcludeUnencryptInd*/
12240#endif
12241
Yue Mab9c86f42013-08-14 15:59:08 -070012242/**
12243 @brief Process Add Periodic Tx Pattern Indication function (called when
12244 Main FSM allows it)
12245
12246 @param pWDICtx: pointer to the WLAN DAL context
12247 pEventData: pointer to the event information structure
12248
12249 @see
12250 @return Result of the function call
12251*/
12252WDI_Status
12253WDI_ProcessAddPeriodicTxPtrnInd
12254(
12255 WDI_ControlBlockType* pWDICtx,
12256 WDI_EventInfoType* pEventData
12257)
12258{
12259 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12260 wpt_uint8* pSendBuffer = NULL;
12261 wpt_uint16 usDataOffset = 0;
12262 wpt_uint16 usSendSize = 0;
12263 WDI_Status wdiStatus;
12264 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12265 wpt_uint8 selfStaIdx = 0;
12266
12267 /*-------------------------------------------------------------------------
12268 Sanity check
12269 -------------------------------------------------------------------------*/
12270 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12271 {
12272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12273 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12274 WDI_ASSERT(0);
12275 return WDI_STATUS_E_FAILURE;
12276 }
12277
12278 pAddPeriodicTxPtrnParams =
12279 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12280
12281 /*------------------------------------------------------------------------
12282 Get message buffer
12283 ------------------------------------------------------------------------*/
12284 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12285 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12286 &pSendBuffer, &usDataOffset, &usSendSize))||
12287 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12288 {
12289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12290 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12291 __func__);
12292 WDI_ASSERT(0);
12293 return WDI_STATUS_E_FAILURE;
12294 }
12295
12296 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12297
12298 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12299 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12300 &selfStaIdx))
12301 {
12302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12303 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012304 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012305
12306 return WDI_STATUS_E_FAILURE;
12307 }
12308
12309 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12310 halAddPeriodicTxPtrn->ucPtrnId =
12311 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12312 halAddPeriodicTxPtrn->usPtrnSize =
12313 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12314 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12315 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12316
12317 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12318 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12319 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12320
12321 /*-------------------------------------------------------------------------
12322 Send Indication to HAL
12323 -------------------------------------------------------------------------*/
12324 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12325 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12326
12327 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12328
12329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12330 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12331
12332 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12333} /* WDI_ProcessAddPeriodicTxPtrnInd */
12334
12335/**
12336 @brief Process Delete Periodic Tx Pattern Indication function (called when
12337 Main FSM allows it)
12338
12339 @param pWDICtx: pointer to the WLAN DAL context
12340 pEventData: pointer to the event information structure
12341
12342 @see
12343 @return Result of the function call
12344*/
12345WDI_Status
12346WDI_ProcessDelPeriodicTxPtrnInd
12347(
12348 WDI_ControlBlockType* pWDICtx,
12349 WDI_EventInfoType* pEventData
12350)
12351{
12352 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12353 wpt_uint8* pSendBuffer = NULL;
12354 wpt_uint16 usDataOffset = 0;
12355 wpt_uint16 usSendSize = 0;
12356 WDI_Status wdiStatus;
12357 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12358 wpt_uint8 selfStaIdx = 0;
12359
12360 /*-------------------------------------------------------------------------
12361 Sanity check
12362 -------------------------------------------------------------------------*/
12363 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12364 {
12365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12366 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12367 WDI_ASSERT(0);
12368 return WDI_STATUS_E_FAILURE;
12369 }
12370
12371 pDelPeriodicTxPtrnParams =
12372 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12373
12374 /*------------------------------------------------------------------------
12375 Get message buffer
12376 ------------------------------------------------------------------------*/
12377 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12378 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12379 &pSendBuffer, &usDataOffset, &usSendSize))||
12380 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12381 {
12382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12383 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12384 __func__);
12385 WDI_ASSERT(0);
12386 return WDI_STATUS_E_FAILURE;
12387 }
12388
12389 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12390
12391 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12392 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12393 &selfStaIdx))
12394 {
12395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12396 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012397 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012398
12399 return WDI_STATUS_E_FAILURE;
12400 }
12401
12402 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12403 halDelPeriodicTxPtrn->uPatternIdBitmap =
12404 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12405
12406 /*-------------------------------------------------------------------------
12407 Send Indication to HAL
12408 -------------------------------------------------------------------------*/
12409 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12410 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12411
12412 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12413
12414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12415 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12416
12417 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12418} /* WDI_ProcessDelPeriodicTxPtrnInd */
12419
Jeff Johnson295189b2012-06-20 16:38:30 -070012420/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012421 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012422==========================================================================*/
12423/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012424 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012425 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012426
12427 @param pWDICtx: pointer to the WLAN DAL context
12428 pEventData: pointer to the event information structure
12429
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 @see
12431 @return Result of the function call
12432*/
12433WDI_Status
12434WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012435(
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 WDI_ControlBlockType* pWDICtx,
12437 WDI_EventInfoType* pEventData
12438)
12439{
12440 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12441 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012442 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012443 wpt_uint16 usDataOffset = 0;
12444 wpt_uint16 usSendSize = 0;
12445 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12447
12448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 -------------------------------------------------------------------------*/
12451 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12452 ( NULL == pEventData->pCBfnc ))
12453 {
12454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 }
12459
12460 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12461 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12462 /*-----------------------------------------------------------------------
12463 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012464 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012466 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 sizeof(halSwitchChannelReq.switchChannelParams),
12468 &pSendBuffer, &usDataOffset, &usSendSize))||
12469 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12470 {
12471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012472 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 }
12477
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012480#ifndef WLAN_FEATURE_VOWIFI
12481 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12483#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012484 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012485 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12486
12487#ifdef WLAN_FEATURE_VOWIFI
12488 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12491 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12492 WDI_MAC_ADDR_LEN);
12493 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12494 pwdiSwitchChParams->wdiChInfo.macBSSId,
12495 WDI_MAC_ADDR_LEN);
12496#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 wpalMemoryCopy( pSendBuffer+usDataOffset,
12498 &halSwitchChannelReq.switchChannelParams,
12499 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012500
12501 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012502 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012503
12504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12508 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012509}/*WDI_ProcessChannelSwitchReq*/
12510
12511/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012512 @brief Process Channel Switch Request function (called when
12513 Main FSM allows it)
12514
12515 @param pWDICtx: pointer to the WLAN DAL context
12516 pEventData: pointer to the event information structure
12517
12518 @see
12519 @return Result of the function call
12520*/
12521WDI_Status WDI_ProcessChannelSwitchReq_V1
12522(
12523 WDI_ControlBlockType* pWDICtx,
12524 WDI_EventInfoType* pEventData
12525)
12526{
12527 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12528 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12529 wpt_uint8* pSendBuffer = NULL;
12530 wpt_uint16 usDataOffset = 0;
12531 wpt_uint16 usSendSize = 0;
12532 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12534
12535 /*-------------------------------------------------------------------------
12536 Sanity check
12537 -------------------------------------------------------------------------*/
12538 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12539 ( NULL == pEventData->pCBfnc ))
12540 {
12541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12542 "%s: Invalid parameters", __func__);
12543 WDI_ASSERT(0);
12544 return WDI_STATUS_E_FAILURE;
12545 }
12546
12547 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12548 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12549 /*-----------------------------------------------------------------------
12550 Get message buffer
12551 ! TO DO : proper conversion into the HAL Message Request Format
12552 -----------------------------------------------------------------------*/
12553 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12554 WDI_CH_SWITCH_REQ_V1,
12555 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12556 &pSendBuffer, &usDataOffset, &usSendSize))||
12557 ( usSendSize < (usDataOffset +
12558 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12559 {
12560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12561 "Unable to get send buffer in channel switch req %p %p %p",
12562 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12563 WDI_ASSERT(0);
12564 return WDI_STATUS_E_FAILURE;
12565 }
12566
12567 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12568 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12569
12570 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12571 pwdiSwitchChParams->wdiChInfo.ucChannel;
12572#ifndef WLAN_FEATURE_VOWIFI
12573 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12574 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12575#endif
12576 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12577 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12578
12579#ifdef WLAN_FEATURE_VOWIFI
12580 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12581 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12582 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12583 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12584 WDI_MAC_ADDR_LEN);
12585 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12586 pwdiSwitchChParams->wdiChInfo.macBSSId,
12587 WDI_MAC_ADDR_LEN);
12588#endif
12589 wpalMemoryCopy( pSendBuffer+usDataOffset,
12590 &halSwitchChannelReq.switchChannelParams_V1,
12591 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12592
12593 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12594 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12595
12596 /*-------------------------------------------------------------------------
12597 Send Switch Channel Request to HAL
12598 -------------------------------------------------------------------------*/
12599 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12600 wdiSwitchChRspCb, pEventData->pUserData,
12601 WDI_CH_SWITCH_RESP_V1);
12602}/*WDI_ProcessChannelSwitchReq_V1*/
12603
12604/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012607
12608 @param pWDICtx: pointer to the WLAN DAL context
12609 pEventData: pointer to the event information structure
12610
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 @see
12612 @return Result of the function call
12613*/
12614WDI_Status
12615WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012616(
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 WDI_ControlBlockType* pWDICtx,
12618 WDI_EventInfoType* pEventData
12619)
12620{
12621 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12622 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 wpt_uint16 usDataOffset = 0;
12627 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012629
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 tConfigStaReqMsg halConfigStaReqMsg;
12631 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12633
12634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 -------------------------------------------------------------------------*/
12637 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12638 ( NULL == pEventData->pCBfnc ))
12639 {
12640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012641 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 }
12645
Abhishek Singh6927fa02014-06-27 17:19:55 +053012646 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12648 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12649 /*-------------------------------------------------------------------------
12650 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012651 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 -------------------------------------------------------------------------*/
12653 wpalMutexAcquire(&pWDICtx->wptMutex);
12654
12655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012656 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012658 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12659 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12660 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012661
Jeff Johnsone7245742012-09-05 17:12:55 -070012662 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12665 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12666 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012667
12668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012670 }
12671
12672 /*------------------------------------------------------------------------
12673 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012674 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 ------------------------------------------------------------------------*/
12676 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12677 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12679 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12680 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012681
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 }
12686
12687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012688
12689 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12690#ifdef WLAN_FEATURE_11AC
12691 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012692 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 else
12694#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012695 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012696
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 /*-----------------------------------------------------------------------
12698 Get message buffer
12699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12701 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 {
12705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012706 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012710 }
12711
12712 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 &pwdiConfigSTAParams->wdiReqInfo);
12715
12716 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12717 {
12718 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 WDI_STATableFindStaidByAddr(pWDICtx,
12721 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012722 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012723 {
12724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012725 MAC_ADDRESS_STR
12726 ": This station does not exist in the WDI Station Table",
12727 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012729 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012731 }
12732 }
12733 else
12734 {
12735 /* Need to fill in the STA Index to invalid, since at this point we have not
12736 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012737 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012738 }
12739
12740 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012741 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012742
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 wpalMemoryCopy( pSendBuffer+usDataOffset,
12744 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012745 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012746
12747 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012749
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12751 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 sizeof(pWDICtx->wdiCachedConfigStaReq));
12753
12754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012755 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12758 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012759}/*WDI_ProcessConfigStaReq*/
12760
12761
12762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012765
12766 @param pWDICtx: pointer to the WLAN DAL context
12767 pEventData: pointer to the event information structure
12768
Jeff Johnson295189b2012-06-20 16:38:30 -070012769 @see
12770 @return Result of the function call
12771*/
12772WDI_Status
12773WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012774(
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 WDI_ControlBlockType* pWDICtx,
12776 WDI_EventInfoType* pEventData
12777)
12778{
12779 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12780 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012783 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 wpt_uint16 usDataOffset = 0;
12785 wpt_uint16 usSendSize = 0;
12786 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012787 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12789
12790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012791 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012792 -------------------------------------------------------------------------*/
12793 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12794 ( NULL == pEventData->pCBfnc ))
12795 {
12796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 }
12801
12802 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12803 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12804 /*-------------------------------------------------------------------------
12805 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 -------------------------------------------------------------------------*/
12808 wpalMutexAcquire(&pWDICtx->wptMutex);
12809
12810 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12814 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12815 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012816
Jeff Johnsone7245742012-09-05 17:12:55 -070012817 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012818 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12821 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012822 }
12823 else
12824 {
12825 /*------------------------------------------------------------------------
12826 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012827 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012828 ------------------------------------------------------------------------*/
12829 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12830 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12832 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12833 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12834
12835 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012836 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 }
12839 }
12840 /* If the link is set to enter IDLE - the Session allocated for this BSS
12841 will be deleted on the Set Link State response coming from HAL
12842 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012843 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012844 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12845
12846 wpalMutexRelease(&pWDICtx->wptMutex);
12847 /*-----------------------------------------------------------------------
12848 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012849 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012851
12852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 sizeof(halLinkStateReqMsg),
12854 &pSendBuffer, &usDataOffset, &usSendSize))||
12855 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12856 {
12857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012858 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012862 }
12863
12864 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12865 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12866
12867 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12868 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12869
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12872
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 wpalMemoryCopy( pSendBuffer+usDataOffset,
12874 &halLinkStateReqMsg,
12875 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012876
12877 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012879
12880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12884 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012885}/*WDI_ProcessSetLinkStateReq*/
12886
12887
12888/**
12889 @brief Process Get Stats Request function (called when Main FSM
12890 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012891
12892 @param pWDICtx: pointer to the WLAN DAL context
12893 pEventData: pointer to the event information structure
12894
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 @see
12896 @return Result of the function call
12897*/
12898WDI_Status
12899WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012900(
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 WDI_ControlBlockType* pWDICtx,
12902 WDI_EventInfoType* pEventData
12903)
12904{
12905 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12906 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012908 wpt_uint16 usDataOffset = 0;
12909 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 WDI_BSSSessionType* pBSSSes = NULL;
12912 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012913 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012914 tHalStatsReqMsg halStatsReqMsg;
12915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12916
12917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 -------------------------------------------------------------------------*/
12920 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12921 ( NULL == pEventData->pCBfnc ) )
12922 {
12923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 }
12928
12929 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12930 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12931
12932 /*-------------------------------------------------------------------------
12933 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012934 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 -------------------------------------------------------------------------*/
12936 wpalMutexAcquire(&pWDICtx->wptMutex);
12937
12938 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012939 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012941 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12942 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 &macBSSID))
12944 {
12945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012946 "This station does not exist in the WDI Station Table %d",
12947 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 }
12951
Jeff Johnsone7245742012-09-05 17:12:55 -070012952 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12953 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12956 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12957 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012958
12959 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 }
12962
12963 /*------------------------------------------------------------------------
12964 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012965 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012966 ------------------------------------------------------------------------*/
12967 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12968 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12970 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12971 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012972
Jeff Johnsone7245742012-09-05 17:12:55 -070012973 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012975 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012976 }
12977
12978
12979 wpalMutexRelease(&pWDICtx->wptMutex);
12980
12981 /*-----------------------------------------------------------------------
12982 Get message buffer
12983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012985 sizeof(halStatsReqMsg.statsReqParams),
12986 &pSendBuffer, &usDataOffset, &usSendSize))||
12987 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12988 {
12989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012990 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012991 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 }
12995
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012998 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012999 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070013000 wpalMemoryCopy( pSendBuffer+usDataOffset,
13001 &halStatsReqMsg.statsReqParams,
13002 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013003
13004 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013006
13007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013008 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013010 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13011 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013012}/*WDI_ProcessGetStatsReq*/
13013
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013014#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013015/**
13016 @brief Process Get Roam Rssi Request function (called when Main FSM
13017 allows it)
13018
13019 @param pWDICtx: pointer to the WLAN DAL context
13020 pEventData: pointer to the event information structure
13021
13022 @see
13023 @return Result of the function call
13024*/
13025WDI_Status
13026WDI_ProcessGetRoamRssiReq
13027(
13028 WDI_ControlBlockType* pWDICtx,
13029 WDI_EventInfoType* pEventData
13030)
13031{
13032 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
13033 WDI_GetStatsRspCb wdiGetStatsRspCb;
13034 wpt_uint8* pSendBuffer = NULL;
13035 wpt_uint16 usDataOffset = 0;
13036 wpt_uint16 usSendSize = 0;
13037 wpt_uint8 ucCurrentBSSSesIdx = 0;
13038 WDI_BSSSessionType* pBSSSes = NULL;
13039 wpt_macAddr macBSSID;
13040 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
13041 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
13042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13043 /*-------------------------------------------------------------------------
13044 Sanity check
13045 -------------------------------------------------------------------------*/
13046 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
13047 ( NULL == pEventData->pCBfnc ) )
13048 {
13049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13050 "%s: Invalid parameters", __func__);
13051 WDI_ASSERT(0);
13052 return WDI_STATUS_E_FAILURE;
13053 }
13054
13055 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
13056 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
13057
13058 /*-------------------------------------------------------------------------
13059 Check to see if we are in the middle of an association, if so queue, if
13060 not it means it is free to process request
13061 -------------------------------------------------------------------------*/
13062 wpalMutexAcquire(&pWDICtx->wptMutex);
13063
13064 /*------------------------------------------------------------------------
13065 Find the BSS for which the request is made
13066 ------------------------------------------------------------------------*/
13067 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13068 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
13069 &macBSSID))
13070 {
13071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013072 "This station does not exist in the WDI Station Table %d",
13073 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013074 wpalMutexRelease(&pWDICtx->wptMutex);
13075 return WDI_STATUS_E_FAILURE;
13076 }
13077
13078 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13079 if ( NULL == pBSSSes )
13080 {
13081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13082 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13083 __func__, MAC_ADDR_ARRAY(macBSSID));
13084
13085 wpalMutexRelease(&pWDICtx->wptMutex);
13086 return WDI_STATUS_E_NOT_ALLOWED;
13087 }
13088
13089 /*------------------------------------------------------------------------
13090 Check if this BSS is being currently processed or queued,
13091 if queued - queue the new request as well
13092 ------------------------------------------------------------------------*/
13093 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13094 {
13095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13096 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13097 __func__, MAC_ADDR_ARRAY(macBSSID));
13098
13099 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
13100 wpalMutexRelease(&pWDICtx->wptMutex);
13101 return wdiStatus;
13102 }
13103
13104 wpalMutexRelease(&pWDICtx->wptMutex);
13105
13106 /*-----------------------------------------------------------------------
13107 Get message buffer
13108 -----------------------------------------------------------------------*/
13109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
13110 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
13111 &pSendBuffer, &usDataOffset, &usSendSize))||
13112 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
13113 {
13114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013115 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013116 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
13117 WDI_ASSERT(0);
13118 return WDI_STATUS_E_FAILURE;
13119 }
13120
13121 halRssiRoamReqMsg.roamRssiReqParams.staId =
13122 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
13123 wpalMemoryCopy( pSendBuffer+usDataOffset,
13124 &halRssiRoamReqMsg.roamRssiReqParams,
13125 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
13126
13127 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
13128 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
13129
13130 /*-------------------------------------------------------------------------
13131 Send Get STA Request to HAL
13132 -------------------------------------------------------------------------*/
13133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13134 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
13135}/*WDI_ProcessGetRoamRssiReq*/
13136#endif
13137
Jeff Johnson295189b2012-06-20 16:38:30 -070013138/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013141
13142 @param pWDICtx: pointer to the WLAN DAL context
13143 pEventData: pointer to the event information structure
13144
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 @see
13146 @return Result of the function call
13147*/
13148WDI_Status
13149WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013150(
Jeff Johnson295189b2012-06-20 16:38:30 -070013151 WDI_ControlBlockType* pWDICtx,
13152 WDI_EventInfoType* pEventData
13153)
13154{
13155 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13156 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13157
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 wpt_uint16 usDataOffset = 0;
13160 wpt_uint16 usSendSize = 0;
13161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13162
13163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 -------------------------------------------------------------------------*/
13166 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13167 ( NULL == pEventData->pCBfnc))
13168 {
13169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 }
13174
13175 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13176 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13177
13178 /*-----------------------------------------------------------------------
13179 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 -----------------------------------------------------------------------*/
13182
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13185 &pSendBuffer, &usDataOffset, &usSendSize))||
13186 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13187 {
13188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013189 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13191 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013193 }
13194
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 wpalMemoryCopy( pSendBuffer+usDataOffset,
13196 &pwdiUpdateCfgParams->uConfigBufferLen,
13197 sizeof(wpt_uint32));
13198 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13199 pwdiUpdateCfgParams->pConfigBuffer,
13200 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013201
13202 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013204
13205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 -------------------------------------------------------------------------*/
13208
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13210 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013211
13212}/*WDI_ProcessUpdateCfgReq*/
13213
13214
13215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013218
13219 @param pWDICtx: pointer to the WLAN DAL context
13220 pEventData: pointer to the event information structure
13221
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 @see
13223 @return Result of the function call
13224*/
13225WDI_Status
13226WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013227(
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 WDI_ControlBlockType* pWDICtx,
13229 WDI_EventInfoType* pEventData
13230)
13231{
13232 WDI_AddBAReqParamsType* pwdiAddBAParams;
13233 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013236 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013237 wpt_uint16 usDataOffset = 0;
13238 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013239 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013240 wpt_macAddr macBSSID;
13241
13242 tAddBAReqMsg halAddBAReq;
13243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13244
13245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013247 -------------------------------------------------------------------------*/
13248 if (( NULL == pEventData ) ||
13249 ( NULL == pEventData->pEventData) ||
13250 ( NULL == pEventData->pCBfnc ))
13251 {
13252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013253 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 }
13257
13258 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13259 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13260
13261 /*-------------------------------------------------------------------------
13262 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 -------------------------------------------------------------------------*/
13265 wpalMutexAcquire(&pWDICtx->wptMutex);
13266
13267 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013270 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13271 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 &macBSSID))
13273 {
13274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013275 "This station does not exist in the WDI Station Table %d",
13276 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 }
13280
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13282 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013283 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13285 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13286 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013287
13288 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 }
13291
13292 /*------------------------------------------------------------------------
13293 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013294 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013295 ------------------------------------------------------------------------*/
13296 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13297 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13299 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13300 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013301
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013305 }
13306
13307
13308 wpalMutexRelease(&pWDICtx->wptMutex);
13309 /*-----------------------------------------------------------------------
13310 Get message buffer
13311 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013313 sizeof(halAddBAReq.addBAParams),
13314 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13317 {
13318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013319 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013323 }
13324
Jeff Johnsone7245742012-09-05 17:12:55 -070013325 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013326 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13327 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13328#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013329 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013330 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13331#endif
13332
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 wpalMemoryCopy( pSendBuffer+usDataOffset,
13334 &halAddBAReq.addBAParams,
13335 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013336
13337 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013339
13340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013343 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13344 wdiAddBARspCb, pEventData->pUserData,
13345 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013346}/*WDI_ProcessAddBAReq*/
13347
13348
13349
13350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013351 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013353
13354 @param pWDICtx: pointer to the WLAN DAL context
13355 pEventData: pointer to the event information structure
13356
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 @see
13358 @return Result of the function call
13359*/
13360WDI_Status
13361WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013362(
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 WDI_ControlBlockType* pWDICtx,
13364 WDI_EventInfoType* pEventData
13365)
13366{
13367 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13368 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013371 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 wpt_uint16 usDataOffset = 0;
13373 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 wpt_uint16 index;
13376 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013377
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 tTriggerBAReqMsg halTriggerBAReq;
13379 tTriggerBaReqCandidate* halTriggerBACandidate;
13380 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13382
13383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 -------------------------------------------------------------------------*/
13386 if (( NULL == pEventData ) ||
13387 ( NULL == pEventData->pEventData ) ||
13388 ( NULL == pEventData->pCBfnc ))
13389 {
13390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 }
13395
13396 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13397 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13398 /*-------------------------------------------------------------------------
13399 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013400 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 -------------------------------------------------------------------------*/
13402 wpalMutexAcquire(&pWDICtx->wptMutex);
13403
13404 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013407 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13408 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 &macBSSID))
13410 {
13411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013412 "This station does not exist in the WDI Station Table %d",
13413 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013414 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 }
13417
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13419 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13422 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13423 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013424
13425 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013426 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013427 }
13428
13429 /*------------------------------------------------------------------------
13430 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 ------------------------------------------------------------------------*/
13433 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13434 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13436 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13437 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013438
Jeff Johnsone7245742012-09-05 17:12:55 -070013439 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013440 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 }
13443
13444
13445 wpalMutexRelease(&pWDICtx->wptMutex);
13446 /*-----------------------------------------------------------------------
13447 Get message buffer
13448 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013449 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13450 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013451 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013452 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13454 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13459 {
13460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013461 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 }
13466
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13471
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 wpalMemoryCopy( pSendBuffer+usDataOffset,
13473 &halTriggerBAReq.triggerBAParams,
13474 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013475
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13478 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13479 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013480
13481 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 index++)
13483 {
13484 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13485 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13486 halTriggerBACandidate++;
13487 wdiTriggerBACandidate++;
13488 }
13489
13490 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013492
13493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13497 wdiTriggerBARspCb, pEventData->pUserData,
13498 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013499}/*WDI_ProcessTriggerBAReq*/
13500
13501
13502
13503/**
13504 @brief Process Update Beacon Params Request function (called when Main FSM
13505 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013506
13507 @param pWDICtx: pointer to the WLAN DAL context
13508 pEventData: pointer to the event information structure
13509
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 @see
13511 @return Result of the function call
13512*/
13513WDI_Status
13514WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013515(
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 WDI_ControlBlockType* pWDICtx,
13517 WDI_EventInfoType* pEventData
13518)
13519{
13520 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13521 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 wpt_uint16 usDataOffset = 0;
13524 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013525 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13527
13528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 -------------------------------------------------------------------------*/
13531 if (( NULL == pEventData ) ||
13532 ( NULL == pEventData->pEventData) ||
13533 ( NULL == pEventData->pCBfnc))
13534 {
13535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013536 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 }
13540
13541 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13542 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13543 /*-----------------------------------------------------------------------
13544 Get message buffer
13545 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013546 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 sizeof(halUpdateBeaconParams),
13548 &pSendBuffer, &usDataOffset, &usSendSize))||
13549 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13550 {
13551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013552 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013553 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 }
13557
13558 /*BSS Index of the BSS*/
13559 halUpdateBeaconParams.bssIdx =
13560 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13561 /*shortPreamble mode. HAL should update all the STA rates when it
13562 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013563 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013564 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13565 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013567 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13568 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013569 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013570 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13571
13572 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013579 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13585 halUpdateBeaconParams.fRIFSMode =
13586 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013587 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013588 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13589
Jeff Johnsone7245742012-09-05 17:12:55 -070013590 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13591 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013592
13593 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013594 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013595
13596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013597 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013599 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13600 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013601}/*WDI_ProcessUpdateBeaconParamsReq*/
13602
13603
13604
13605/**
13606 @brief Process Send Beacon template Request function (called when Main FSM
13607 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013608
13609 @param pWDICtx: pointer to the WLAN DAL context
13610 pEventData: pointer to the event information structure
13611
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 @see
13613 @return Result of the function call
13614*/
13615WDI_Status
13616WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013617(
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 WDI_ControlBlockType* pWDICtx,
13619 WDI_EventInfoType* pEventData
13620)
13621{
13622 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13623 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 wpt_uint16 usDataOffset = 0;
13626 wpt_uint16 usSendSize = 0;
13627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13628
13629 tSendBeaconReqMsg halSendBeaconReq;
13630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013631 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013632 -------------------------------------------------------------------------*/
13633 if (( NULL == pEventData ) ||
13634 ( NULL == pEventData->pEventData ) ||
13635 ( NULL == pEventData->pCBfnc ))
13636 {
13637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 }
13642
13643 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13644 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13645 /*-----------------------------------------------------------------------
13646 Get message buffer
13647 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013648 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 sizeof(halSendBeaconReq.sendBeaconParam),
13650 &pSendBuffer, &usDataOffset, &usSendSize))||
13651 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13652 {
13653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013654 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013655 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 }
13659
13660 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13661 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13662 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013663 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013664 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13665 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13666 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13667 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013670 /* usP2PIeOffset should be atleast greater than timIeOffset */
13671 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13672 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13673 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13674 {
13675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13676 "Invalid usP2PIeOffset %hu",
13677 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13678 WDI_ASSERT(0);
13679 return WDI_STATUS_E_FAILURE;
13680 }
13681
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013684
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 wpalMemoryCopy( pSendBuffer+usDataOffset,
13686 &halSendBeaconReq.sendBeaconParam,
13687 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013688
13689 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013690 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013691
13692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13696 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013697}/*WDI_ProcessSendBeaconParamsReq*/
13698
13699/**
13700 @brief Process Update Beacon Params Request function (called when Main FSM
13701 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013702
13703 @param pWDICtx: pointer to the WLAN DAL context
13704 pEventData: pointer to the event information structure
13705
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 @see
13707 @return Result of the function call
13708*/
13709WDI_Status
13710WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013711(
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 WDI_ControlBlockType* pWDICtx,
13713 WDI_EventInfoType* pEventData
13714)
13715{
13716 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13717 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 wpt_uint16 usDataOffset = 0;
13720 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13723
13724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 -------------------------------------------------------------------------*/
13727 if (( NULL == pEventData ) ||
13728 ( NULL == pEventData->pEventData) ||
13729 ( NULL == pEventData->pCBfnc))
13730 {
13731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 }
13736
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13741 /*-----------------------------------------------------------------------
13742 Get message buffer
13743 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013744 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013745 sizeof(halUpdateProbeRspTmplParams),
13746 &pSendBuffer, &usDataOffset, &usSendSize))||
13747 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13748 {
13749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013750 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 }
13755
13756 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013757 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 WDI_MAC_ADDR_LEN);
13759
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13762
13763 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13764 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013766
13767
13768 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13769 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13770 WDI_PROBE_REQ_BITMAP_IE_LEN);
13771
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 wpalMemoryCopy( pSendBuffer+usDataOffset,
13773 &halUpdateProbeRspTmplParams,
13774 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013775
13776 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013778
13779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13783 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13784 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013785}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13786
13787/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013788 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013790
13791 @param pWDICtx: pointer to the WLAN DAL context
13792 pEventData: pointer to the event information structure
13793
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 @see
13795 @return Result of the function call
13796*/
13797WDI_Status
13798WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013799(
Jeff Johnson295189b2012-06-20 16:38:30 -070013800 WDI_ControlBlockType* pWDICtx,
13801 WDI_EventInfoType* pEventData
13802)
13803{
13804
13805 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13806 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13807
13808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013810 -------------------------------------------------------------------------*/
13811 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013812 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013814 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013815 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13816 {
13817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 }
13822
13823 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13826
13827 /*cache the wdi nv request message here if the the first fragment
13828 * To issue the request to HAL for the next fragment */
13829 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13830 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13832 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013833 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13834
13835 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13836 pWDICtx->pRspCBUserData = pEventData->pUserData;
13837 }
13838
13839 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13840}
13841
13842/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013843 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013845
13846 @param pWDICtx: pointer to the WLAN DAL context
13847 pEventData: pointer to the event information structure
13848
Jeff Johnson295189b2012-06-20 16:38:30 -070013849 @see
13850 @return Result of the function call
13851*/
13852WDI_Status WDI_ProcessSetMaxTxPowerReq
13853(
13854 WDI_ControlBlockType* pWDICtx,
13855 WDI_EventInfoType* pEventData
13856)
13857{
13858 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13859 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013861 wpt_uint16 usDataOffset = 0;
13862 wpt_uint16 usSendSize = 0;
13863 tSetMaxTxPwrReq halSetMaxTxPower;
13864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13865
13866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 -------------------------------------------------------------------------*/
13869 if (( NULL == pEventData ) ||
13870 ( NULL == pEventData->pEventData ) ||
13871 ( NULL == pEventData->pCBfnc ))
13872 {
13873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013877 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013879 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13882
13883 /*-----------------------------------------------------------------------
13884 Get message buffer
13885 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013886if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13888 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013890)))
13891 {
13892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013893 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013894 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 }
13898
13899 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13900 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13901 WDI_MAC_ADDR_LEN);
13902
13903 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13904 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13905 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013908
13909 wpalMemoryCopy( pSendBuffer+usDataOffset,
13910 &halSetMaxTxPower.setMaxTxPwrParams,
13911 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013912
13913 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013915
13916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013917 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013918 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013919 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13920 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13921 WDI_SET_MAX_TX_POWER_RESP);
13922
Jeff Johnson295189b2012-06-20 16:38:30 -070013923}
13924
Arif Hussaina5ebce02013-08-09 15:09:58 -070013925/*
13926 @brief Process Set Max Tx Power Per Band Request function (called when Main
13927 FSM allows it)
13928
13929 @param pWDICtx: pointer to the WLAN DAL context
13930 pEventData: pointer to the event information structure
13931
13932 @see
13933 @return Result of the function call
13934*/
13935WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13936(
13937 WDI_ControlBlockType* pWDICtx,
13938 WDI_EventInfoType* pEventData
13939)
13940{
13941 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13942 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13943 wpt_uint8* pSendBuffer = NULL;
13944 wpt_uint16 usDataOffset = 0;
13945 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013946 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013947 WDI_Status rValue = WDI_STATUS_SUCCESS;
13948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13949
13950 /*-------------------------------------------------------------------------
13951 Sanity check
13952 -------------------------------------------------------------------------*/
13953 if (( NULL == pEventData ) ||
13954 ( NULL == pEventData->pEventData ) ||
13955 ( NULL == pEventData->pCBfnc ))
13956 {
13957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13958 "%s: Invalid parameters", __func__);
13959 WDI_ASSERT(0);
13960 return WDI_STATUS_E_FAILURE;
13961 }
13962 pwdiSetMaxTxPowerPerBandParams = \
13963 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13964
13965 wdiSetMaxTxPowerPerBandRspCb = \
13966 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13967
13968 /*-----------------------------------------------------------------------
13969 Get message buffer
13970 -----------------------------------------------------------------------*/
13971
13972 rValue = WDI_GetMessageBuffer(pWDICtx,
13973 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13974 sizeof(tSetMaxTxPwrPerBandParams),
13975 &pSendBuffer, &usDataOffset, &usSendSize);
13976
13977 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13978 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13979 {
13980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13981 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13982 pEventData, pwdiSetMaxTxPowerPerBandParams,
13983 wdiSetMaxTxPowerPerBandRspCb);
13984 WDI_ASSERT(0);
13985 return WDI_STATUS_E_FAILURE;
13986 }
13987
13988
Arif Hussainf8f080c2014-04-03 09:48:36 -070013989 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13990 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013991 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13992
Arif Hussainf8f080c2014-04-03 09:48:36 -070013993 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013994 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13995
13996 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13997 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13998
13999 /*-------------------------------------------------------------------------
14000 Send Set Max Tx Power Per Band Request to HAL
14001 -------------------------------------------------------------------------*/
14002 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
14003 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
14004 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
14005}
14006
schang86c22c42013-03-13 18:41:24 -070014007/**
14008 @brief Process Set Tx Power Request function (called when Main
14009 FSM allows it)
14010
14011 @param pWDICtx: pointer to the WLAN DAL context
14012 pEventData: pointer to the event information structure
14013
14014 @see
14015 @return Result of the function call
14016*/
14017WDI_Status WDI_ProcessSetTxPowerReq
14018(
14019 WDI_ControlBlockType* pWDICtx,
14020 WDI_EventInfoType* pEventData
14021)
14022{
14023 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
14024 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
14025 wpt_uint8* pSendBuffer = NULL;
14026 wpt_uint16 usDataOffset = 0;
14027 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070014028 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070014029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14030
14031 /*-------------------------------------------------------------------------
14032 Sanity check
14033 -------------------------------------------------------------------------*/
14034 if (( NULL == pEventData ) ||
14035 ( NULL == pEventData->pEventData ) ||
14036 ( NULL == pEventData->pCBfnc ))
14037 {
14038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14039 "%s: Invalid parameters", __func__);
14040 WDI_ASSERT(0);
14041 return WDI_STATUS_E_FAILURE;
14042 }
14043
14044 pwdiSetTxPowerParams =
14045 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
14046 wdiSetTxPowerRspCb =
14047 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
14048
14049 /*-----------------------------------------------------------------------
14050 Get message buffer
14051 -----------------------------------------------------------------------*/
14052 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
14053 sizeof(tSetTxPwrReqParams),
14054 &pSendBuffer, &usDataOffset, &usSendSize))||
14055 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
14056 )))
14057 {
14058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014059 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070014060 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
14061 WDI_ASSERT(0);
14062 return WDI_STATUS_E_FAILURE;
14063 }
14064
Leo Chang9a43db92013-03-25 17:39:58 -070014065 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
14066 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
14067 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070014068
14069 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
14070 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
14071
14072 /*-------------------------------------------------------------------------
14073 Send Set Tx Power Request to HAL
14074 -------------------------------------------------------------------------*/
14075 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14076 wdiSetTxPowerRspCb, pEventData->pUserData,
14077 WDI_SET_TX_POWER_RESP);
14078}
Jeff Johnson295189b2012-06-20 16:38:30 -070014079
14080/**
14081 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14082 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014083
14084 @param pWDICtx: pointer to the WLAN DAL context
14085 pEventData: pointer to the event information structure
14086
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 @see
14088 @return Result of the function call
14089*/
14090WDI_Status
14091WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014092(
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 WDI_ControlBlockType* pWDICtx,
14094 WDI_EventInfoType* pEventData
14095)
14096{
14097 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
14098 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014099 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 wpt_uint16 usDataOffset = 0;
14101 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014102 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14104
14105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 -------------------------------------------------------------------------*/
14108 if (( NULL == pEventData ) ||
14109 ( NULL == pEventData->pEventData) ||
14110 ( NULL == pEventData->pCBfnc))
14111 {
14112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 }
14117
Jeff Johnsone7245742012-09-05 17:12:55 -070014118 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
14122 /*-----------------------------------------------------------------------
14123 Get message buffer
14124 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14126 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 sizeof(halSetP2PGONOAParams),
14128 &pSendBuffer, &usDataOffset, &usSendSize))||
14129 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
14130 {
14131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014132 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
14134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 }
14137
Jeff Johnsone7245742012-09-05 17:12:55 -070014138 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070014139 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070014140 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
14142 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014145 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014146 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014147 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014148 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014149 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014150 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14151
Jeff Johnsone7245742012-09-05 17:12:55 -070014152 wpalMemoryCopy( pSendBuffer+usDataOffset,
14153 &halSetP2PGONOAParams,
14154 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014155
14156 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014157 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014158
14159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014160 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014162 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14163 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14164 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014165}/*WDI_ProcessP2PGONOAReq*/
14166
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014167#ifdef FEATURE_WLAN_TDLS
14168
14169/**
14170 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14171 allows it)
14172
14173 @param pWDICtx: pointer to the WLAN DAL context
14174 pEventData: pointer to the event information structure
14175
14176 @see
14177 @return Result of the function call
14178*/
14179WDI_Status
14180WDI_ProcessTdlsLinkEstablishReq
14181(
14182 WDI_ControlBlockType* pWDICtx,
14183 WDI_EventInfoType* pEventData
14184)
14185{
14186 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14187 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14188 wpt_uint8* pSendBuffer = NULL;
14189 wpt_uint16 usDataOffset = 0;
14190 wpt_uint16 usSendSize = 0;
14191
14192 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14194
14195 /*-------------------------------------------------------------------------
14196 Sanity check
14197 -------------------------------------------------------------------------*/
14198 if (( NULL == pEventData ) ||
14199 ( NULL == pEventData->pEventData) ||
14200 ( NULL == pEventData->pCBfnc))
14201 {
14202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14203 "%s: Invalid parameters", __func__);
14204 WDI_ASSERT(0);
14205 return WDI_STATUS_E_FAILURE;
14206 }
14207 pwdiTDLSLinkEstablishReqParams =
14208 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14209 wdiTDLSLinkEstablishReqRspCb =
14210 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14211
14212
14213 /*-----------------------------------------------------------------------
14214 Get message buffer
14215 -----------------------------------------------------------------------*/
14216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14217 WDI_TDLS_LINK_ESTABLISH_REQ,
14218 sizeof(halSetTDLSLinkEstablishParams),
14219 &pSendBuffer, &usDataOffset, &usSendSize))||
14220 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14221 {
14222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014223 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014224 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14225 WDI_ASSERT(0);
14226 return WDI_STATUS_E_FAILURE;
14227 }
14228
14229 halSetTDLSLinkEstablishParams.staIdx =
14230 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14231 halSetTDLSLinkEstablishParams.bIsResponder =
14232 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14233 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14234 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14235 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14236 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14237 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14238 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14239 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14240 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14241 halSetTDLSLinkEstablishParams.aAck = 0;
14242 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14243 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14244 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014245 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14246 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14247
14248 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14249 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14250 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14251 halSetTDLSLinkEstablishParams.validChannelsLen =
14252 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14253
14254 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14255 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14256 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14257 halSetTDLSLinkEstablishParams.validOperClassesLen =
14258 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014259
14260 wpalMemoryCopy( pSendBuffer+usDataOffset,
14261 &halSetTDLSLinkEstablishParams,
14262 sizeof(halSetTDLSLinkEstablishParams));
14263
14264 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14265 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14266
14267 /*-------------------------------------------------------------------------
14268 Send Update Probe Resp Template Request to HAL
14269 -------------------------------------------------------------------------*/
14270 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14271 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14272 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14273 return 0;
14274}/*WDI_ProcessTdlsLinkEstablishReq*/
14275
14276
Atul Mittalc0f739f2014-07-31 13:47:47 +053014277/**
14278 @brief sends the channel switch command to f/w (called when Main FSM
14279 allows it)
14280
14281 @param pWDICtx: pointer to the WLAN DAL context
14282 pEventData: pointer to the event information structure
14283
14284 @see
14285 @return Result of the function call
14286*/
14287WDI_Status
14288WDI_ProcessTdlsChanSwitchReq
14289(
14290 WDI_ControlBlockType* pWDICtx,
14291 WDI_EventInfoType* pEventData
14292)
14293{
14294 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14295 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14296 wpt_uint8* pSendBuffer = NULL;
14297 wpt_uint16 usDataOffset = 0;
14298 wpt_uint16 usSendSize = 0;
14299 //WDI_Status wdiStatus;
14300 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14302
14303 /*-------------------------------------------------------------------------
14304 Sanity check
14305 -------------------------------------------------------------------------*/
14306 if (( NULL == pEventData ) ||
14307 ( NULL == pEventData->pEventData))
14308 {
14309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14310 "%s: Invalid parameters", __func__);
14311 WDI_ASSERT(0);
14312 return WDI_STATUS_E_FAILURE;
14313 }
14314 pwdiTDLSChanSwitchReqParams =
14315 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14316 wdiTDLSChanSwitchReqRspCb =
14317 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14318
14319 /*-----------------------------------------------------------------------
14320 Get message buffer
14321 -----------------------------------------------------------------------*/
14322 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14323 WDI_TDLS_CHAN_SWITCH_REQ,
14324 sizeof(halSetTDLSChanSwitchParams),
14325 &pSendBuffer, &usDataOffset, &usSendSize))||
14326 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14327 {
14328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14329 "Unable to get send buffer in Channel Switch REQ %p %p %p",
14330 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14331 WDI_ASSERT(0);
14332 return WDI_STATUS_E_FAILURE;
14333 }
14334
14335 halSetTDLSChanSwitchParams.staIdx =
14336 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14337 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14338 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14339 halSetTDLSChanSwitchParams.targetOperClass =
14340 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14341 halSetTDLSChanSwitchParams.targetChannel =
14342 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14343 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14344 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14345 wpalMemoryCopy( pSendBuffer+usDataOffset,
14346 &halSetTDLSChanSwitchParams,
14347 sizeof(halSetTDLSChanSwitchParams));
14348
14349 pWDICtx->wdiReqStatusCB = NULL;
14350 pWDICtx->pReqStatusUserData = NULL;
14351
14352 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14353 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14354 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14355}/*WDI_ProcessTdlsChanSwitchReq*/
14356
14357#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014358
Jeff Johnson295189b2012-06-20 16:38:30 -070014359
14360
14361/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014364 @param None
14365
14366 @see
14367 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014368*/
14369void
14370WDI_SetPowerStateCb
14371(
14372 wpt_status status,
14373 unsigned int dxePhyAddr,
14374 void *pContext
14375)
14376{
14377 wpt_status wptStatus;
14378 WDI_ControlBlockType *pCB = NULL;
14379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 /*
14381 * Trigger the event to bring the Enter BMPS req function to come
14382 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014383*/
14384 if( NULL != pContext )
14385 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014386 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 }
14388 else
14389 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014390 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014391 pCB = &gWDICb;
14392 }
Mihir Shetea4306052014-03-25 00:02:54 +053014393
14394 if(eWLAN_PAL_STATUS_SUCCESS == status )
14395 {
14396 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14397 }
14398 else
14399 {
14400 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14401 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 pCB->dxePhyAddr = dxePhyAddr;
14403 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14404 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14405 {
14406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14407 "Failed to set an event");
14408
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 }
14411 return;
14412}
14413
14414
14415/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014418
14419 @param pWDICtx: pointer to the WLAN DAL context
14420 pEventData: pointer to the event information structure
14421
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 @see
14423 @return Result of the function call
14424*/
14425WDI_Status
14426WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014427(
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 WDI_ControlBlockType* pWDICtx,
14429 WDI_EventInfoType* pEventData
14430)
14431{
Jeff Johnson43971f52012-07-17 12:26:56 -070014432 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014434 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014435 wpt_uint16 usDataOffset = 0;
14436 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014437 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14439
14440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014443 if ((NULL == pEventData ) ||
14444 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14445 (NULL == (pwdiEnterImpsReqParams =
14446 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 {
14448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014451 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 }
14453
14454 /*-----------------------------------------------------------------------
14455 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014456 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 0,
14460 &pSendBuffer, &usDataOffset, &usSendSize))||
14461 ( usSendSize < (usDataOffset )))
14462 {
14463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014464 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 pEventData, wdiEnterImpsRspCb);
14466 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014467 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 }
14469
14470 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014471 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14472 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 {
14474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14475 "WDI Init failed to reset an event");
14476
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014478 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 }
14480
14481 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014482 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14483 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014485 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014486 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014487 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014488 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014489
14490 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014493 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14494 WDI_SET_POWER_STATE_TIMEOUT);
14495 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 {
14497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14498 "WDI Init failed to wait on an event");
14499
Karthick S1fa70262015-08-20 13:28:14 +053014500 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014501 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014502 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 }
14504
Mihir Shetea4306052014-03-25 00:02:54 +053014505 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14506 {
14507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14508 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14509
14510 goto fail;
14511 }
14512
14513 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14514 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014516 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014517 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14519 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014520
14521fail:
14522 // Release the message buffer so we don't leak
14523 wpalMemoryFree(pSendBuffer);
14524
14525failRequest:
14526 //WDA should have failure check to avoid the memory leak
14527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014528}/*WDI_ProcessEnterImpsReq*/
14529
14530/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014533
14534 @param pWDICtx: pointer to the WLAN DAL context
14535 pEventData: pointer to the event information structure
14536
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 @see
14538 @return Result of the function call
14539*/
14540WDI_Status
14541WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014542(
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 WDI_ControlBlockType* pWDICtx,
14544 WDI_EventInfoType* pEventData
14545)
14546{
14547 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014548 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 wpt_uint16 usDataOffset = 0;
14550 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014551 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14553
14554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 -------------------------------------------------------------------------*/
14557 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014558 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14559 (NULL == (pwdiExitImpsReqParams =
14560 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 {
14562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014563 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 }
14567
14568 /*-----------------------------------------------------------------------
14569 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014570 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014572 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 0,
14574 &pSendBuffer, &usDataOffset, &usSendSize))||
14575 ( usSendSize < (usDataOffset )))
14576 {
14577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014578 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 pEventData, wdiExitImpsRspCb);
14580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014582 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014583 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14584 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014586 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14589 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014590}/*WDI_ProcessExitImpsReq*/
14591
14592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014594 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014595
14596 @param pWDICtx: pointer to the WLAN DAL context
14597 pEventData: pointer to the event information structure
14598
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 @see
14600 @return Result of the function call
14601*/
14602WDI_Status
14603WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014604(
Jeff Johnson295189b2012-06-20 16:38:30 -070014605 WDI_ControlBlockType* pWDICtx,
14606 WDI_EventInfoType* pEventData
14607)
14608{
14609 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14610 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 wpt_uint16 usDataOffset = 0;
14613 wpt_uint16 usSendSize = 0;
14614 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014615 wpt_status wptStatus;
14616
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14618
14619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 -------------------------------------------------------------------------*/
14622 if (( NULL == pEventData ) ||
14623 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14624 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14625 {
14626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014629 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 }
14631
14632 /*-----------------------------------------------------------------------
14633 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014634 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014636 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 sizeof(enterBmpsReq),
14638 &pSendBuffer, &usDataOffset, &usSendSize))||
14639 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14640 {
14641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014642 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14644 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014645 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014646 }
14647
14648 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014649 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14650 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 {
14652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14653 "WDI Init failed to reset an event");
14654
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014656 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 }
14658
14659 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014660 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14661 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14662 {
14663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014664 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014665 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014666 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014667 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014668
14669/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014672 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14673 WDI_SET_POWER_STATE_TIMEOUT);
14674 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 {
14676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14677 "WDI Init failed to wait on an event");
14678
Karthick S1fa70262015-08-20 13:28:14 +053014679 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014681 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 }
14683
14684 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14685
14686 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14687 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14688 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14689 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14690
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014691 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14693 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14694 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14695
14696 wpalMemoryCopy( pSendBuffer+usDataOffset,
14697 &enterBmpsReq,
14698 sizeof(enterBmpsReq));
14699
14700 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014702
14703 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014704 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14707 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014708
14709fail:
14710 // Release the message buffer so we don't leak
14711 wpalMemoryFree(pSendBuffer);
14712
14713failRequest:
14714 //WDA should have failure check to avoid the memory leak
14715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014716}/*WDI_ProcessEnterBmpsReq*/
14717
14718/**
14719 @brief Process Exit BMPS Request function (called when Main FSM
14720 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014721
14722 @param pWDICtx: pointer to the WLAN DAL context
14723 pEventData: pointer to the event information structure
14724
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 @see
14726 @return Result of the function call
14727*/
14728WDI_Status
14729WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014730(
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 WDI_ControlBlockType* pWDICtx,
14732 WDI_EventInfoType* pEventData
14733)
14734{
14735 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14736 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014737 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 wpt_uint16 usDataOffset = 0;
14739 wpt_uint16 usSendSize = 0;
14740 tHalExitBmpsReqParams exitBmpsReq;
14741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14742
14743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 -------------------------------------------------------------------------*/
14746 if (( NULL == pEventData ) ||
14747 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14748 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14749 {
14750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 }
14755
14756 /*-----------------------------------------------------------------------
14757 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 sizeof(exitBmpsReq),
14762 &pSendBuffer, &usDataOffset, &usSendSize))||
14763 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14764 {
14765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014766 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014767 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 }
14771 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14772
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14774
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 wpalMemoryCopy( pSendBuffer+usDataOffset,
14776 &exitBmpsReq,
14777 sizeof(exitBmpsReq));
14778
14779 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014781
14782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014783 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14786 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014787}/*WDI_ProcessExitBmpsReq*/
14788
14789/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014792
14793 @param pWDICtx: pointer to the WLAN DAL context
14794 pEventData: pointer to the event information structure
14795
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 @see
14797 @return Result of the function call
14798*/
14799WDI_Status
14800WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014801(
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 WDI_ControlBlockType* pWDICtx,
14803 WDI_EventInfoType* pEventData
14804)
14805{
14806 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14807 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014808 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 wpt_uint16 usDataOffset = 0;
14810 wpt_uint16 usSendSize = 0;
14811 tUapsdReqParams enterUapsdReq;
14812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14813
14814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014815 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 -------------------------------------------------------------------------*/
14817 if (( NULL == pEventData ) ||
14818 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14819 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14820 {
14821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014822 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 }
14826
14827 /*-----------------------------------------------------------------------
14828 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014832 sizeof(enterUapsdReq),
14833 &pSendBuffer, &usDataOffset, &usSendSize))||
14834 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14835 {
14836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014837 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014841 }
14842
14843 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14844 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14845 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14846 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14847 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14848 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14849 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14850 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014851 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014852
Jeff Johnsone7245742012-09-05 17:12:55 -070014853 wpalMemoryCopy( pSendBuffer+usDataOffset,
14854 &enterUapsdReq,
14855 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014856
14857 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014859
14860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014861 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014862 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14864 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014865}/*WDI_ProcessEnterUapsdReq*/
14866
14867/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014870
14871 @param pWDICtx: pointer to the WLAN DAL context
14872 pEventData: pointer to the event information structure
14873
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 @see
14875 @return Result of the function call
14876*/
14877WDI_Status
14878WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014879(
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 WDI_ControlBlockType* pWDICtx,
14881 WDI_EventInfoType* pEventData
14882)
14883{
14884 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 wpt_uint16 usDataOffset = 0;
14887 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014888 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14889 wpt_uint8 bssIdx = 0;
14890
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14892
14893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 -------------------------------------------------------------------------*/
14896 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014897 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14899 {
14900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 }
14905
14906 /*-----------------------------------------------------------------------
14907 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014910 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014911 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014913 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 {
14915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014916 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 pEventData, wdiExitUapsdRspCb);
14918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 }
14921
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014922 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14923
14924 wpalMemoryCopy( pSendBuffer+usDataOffset,
14925 &bssIdx,
14926 sizeof(wpt_uint8));
14927
14928 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14929 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14930
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14935 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014936}/*WDI_ProcessExitUapsdReq*/
14937
14938/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014941
14942 @param pWDICtx: pointer to the WLAN DAL context
14943 pEventData: pointer to the event information structure
14944
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 @see
14946 @return Result of the function call
14947*/
14948WDI_Status
14949WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014950(
Jeff Johnson295189b2012-06-20 16:38:30 -070014951 WDI_ControlBlockType* pWDICtx,
14952 WDI_EventInfoType* pEventData
14953)
14954{
14955 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14956 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014957 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 wpt_uint16 usDataOffset = 0;
14959 wpt_uint16 usSendSize = 0;
14960 tUapsdInfo uapsdAcParamsReq;
14961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14962
14963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 -------------------------------------------------------------------------*/
14966 if (( NULL == pEventData ) ||
14967 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14968 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14969 {
14970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014971 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014974 }
14975
14976 /*-----------------------------------------------------------------------
14977 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 sizeof(uapsdAcParamsReq),
14982 &pSendBuffer, &usDataOffset, &usSendSize))||
14983 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14984 {
14985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014986 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014987 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 }
14991
14992 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14993 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14994 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14995 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14996 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14997 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14998
Jeff Johnsone7245742012-09-05 17:12:55 -070014999 wpalMemoryCopy( pSendBuffer+usDataOffset,
15000 &uapsdAcParamsReq,
15001 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015002
15003 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015004 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015005
15006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015007 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015008 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015009 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15010 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015011}/*WDI_ProcessSetUapsdAcParamsReq*/
15012
15013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015014 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015015 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015016
15017 @param pWDICtx: pointer to the WLAN DAL context
15018 pEventData: pointer to the event information structure
15019
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 @see
15021 @return Result of the function call
15022*/
15023WDI_Status
15024WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015025(
Jeff Johnson295189b2012-06-20 16:38:30 -070015026 WDI_ControlBlockType* pWDICtx,
15027 WDI_EventInfoType* pEventData
15028)
15029{
15030 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
15031 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 wpt_uint16 usDataOffset = 0;
15034 wpt_uint16 usSendSize = 0;
15035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15036
15037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 -------------------------------------------------------------------------*/
15040 if (( NULL == pEventData ) ||
15041 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
15042 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
15043 {
15044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015045 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015046 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015047 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 }
15049
15050 /*-----------------------------------------------------------------------
15051 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015052 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015053 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
15056 &pSendBuffer, &usDataOffset, &usSendSize))||
15057 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
15058 {
15059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015060 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015061 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
15062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 }
15065
Jeff Johnsone7245742012-09-05 17:12:55 -070015066 wpalMemoryCopy( pSendBuffer+usDataOffset,
15067 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
15068 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015069
15070 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015071 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015072
15073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015074 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015076 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15077 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015078}/*WDI_ProcessUpdateUapsdParamsReq*/
15079
15080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015081 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015082 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015083
15084 @param pWDICtx: pointer to the WLAN DAL context
15085 pEventData: pointer to the event information structure
15086
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 @see
15088 @return Result of the function call
15089*/
15090WDI_Status
15091WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015092(
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 WDI_ControlBlockType* pWDICtx,
15094 WDI_EventInfoType* pEventData
15095)
15096{
15097 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
15098 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015099 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 wpt_uint16 usDataOffset = 0;
15101 wpt_uint16 usSendSize = 0;
15102 tHalConfigureRxpFilterReqParams halRxpFilterParams;
15103
15104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15105
15106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 -------------------------------------------------------------------------*/
15109 if (( NULL == pEventData ) ||
15110 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
15111 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
15112 {
15113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015117 }
15118
15119 /*-----------------------------------------------------------------------
15120 Get message buffer
15121 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 sizeof(halRxpFilterParams),
15124 &pSendBuffer, &usDataOffset, &usSendSize))||
15125 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
15126 {
15127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015128 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015129 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
15130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 }
15133
Jeff Johnsone7245742012-09-05 17:12:55 -070015134 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070015135 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070015136 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070015137 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
15138
Jeff Johnsone7245742012-09-05 17:12:55 -070015139 wpalMemoryCopy( pSendBuffer+usDataOffset,
15140 &halRxpFilterParams,
15141 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015142
15143 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015145
15146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015148 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015149 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15150 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015151}/*WDI_ProcessConfigureRxpFilterReq*/
15152
15153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015154 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015156
15157 @param pWDICtx: pointer to the WLAN DAL context
15158 pEventData: pointer to the event information structure
15159
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 @see
15161 @return Result of the function call
15162*/
15163WDI_Status
15164WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015165(
Jeff Johnson295189b2012-06-20 16:38:30 -070015166 WDI_ControlBlockType* pWDICtx,
15167 WDI_EventInfoType* pEventData
15168)
15169{
15170 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15171 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 wpt_uint16 usDataOffset = 0;
15174 wpt_uint16 usSendSize = 0;
15175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15176
15177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 -------------------------------------------------------------------------*/
15180 if (( NULL == pEventData ) ||
15181 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15182 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15183 {
15184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 }
15189
15190 /*-----------------------------------------------------------------------
15191 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015192 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15196 &pSendBuffer, &usDataOffset, &usSendSize))||
15197 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15198 {
15199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015200 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 }
15205
Jeff Johnsone7245742012-09-05 17:12:55 -070015206 wpalMemoryCopy( pSendBuffer+usDataOffset,
15207 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15208 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15209 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15210 &pwdiBeaconFilterParams->aFilters[0],
15211 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015212
15213 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015215
15216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015217 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15220 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015221}/*WDI_ProcessSetBeaconFilterReq*/
15222
15223/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015224 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015226
15227 @param pWDICtx: pointer to the WLAN DAL context
15228 pEventData: pointer to the event information structure
15229
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 @see
15231 @return Result of the function call
15232*/
15233WDI_Status
15234WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015235(
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 WDI_ControlBlockType* pWDICtx,
15237 WDI_EventInfoType* pEventData
15238)
15239{
15240 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15241 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 wpt_uint16 usDataOffset = 0;
15244 wpt_uint16 usSendSize = 0;
15245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15246
15247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015248 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 -------------------------------------------------------------------------*/
15250 if (( NULL == pEventData ) ||
15251 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15252 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15253 {
15254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 }
15259
15260 /*-----------------------------------------------------------------------
15261 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15266 &pSendBuffer, &usDataOffset, &usSendSize))||
15267 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15268 {
15269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015270 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 }
15275
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 wpalMemoryCopy( pSendBuffer+usDataOffset,
15277 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15278 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015279
15280 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015282
15283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015284 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15287 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015288}
15289
15290/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015293
15294 @param pWDICtx: pointer to the WLAN DAL context
15295 pEventData: pointer to the event information structure
15296
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 @see
15298 @return Result of the function call
15299*/
15300WDI_Status
15301WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015302(
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 WDI_ControlBlockType* pWDICtx,
15304 WDI_EventInfoType* pEventData
15305)
15306{
15307 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15308 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015309 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015310 wpt_uint16 usDataOffset = 0;
15311 wpt_uint16 usSendSize = 0;
15312 tHalRSSIThresholds rssiThresholdsReq;
15313 WDI_Status ret_status = 0;
15314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15315
15316 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015317 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015318 -------------------------------------------------------------------------*/
15319 if (( NULL == pEventData ) ||
15320 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15321 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15322 {
15323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015324 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015327 }
15328
15329 /*-----------------------------------------------------------------------
15330 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015331 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015333 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 sizeof(rssiThresholdsReq),
15335 &pSendBuffer, &usDataOffset, &usSendSize))||
15336 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15337 {
15338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015339 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 }
15344
Jeff Johnsone7245742012-09-05 17:12:55 -070015345 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015347 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015348 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015353 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015355 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015357 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015361 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015363 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15365
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 wpalMemoryCopy( pSendBuffer+usDataOffset,
15367 &rssiThresholdsReq,
15368 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015369
15370 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015372
15373 /*-------------------------------------------------------------------------
15374 Send Set threshold req to HAL
15375 -------------------------------------------------------------------------*/
15376 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15377 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15378 {
15379 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15380 // req. Then as a result of processing the threshold cross ind, we trigger
15381 // a Set threshold req, then we need to indicate to WDI that it needs to
15382 // go to busy state as a result of the indication as we sent a req in the
15383 // same WDI context.
15384 // Hence expected state transition is to busy.
15385 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15386 }
15387
15388 return ret_status;
15389}
15390
15391/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015394
15395 @param pWDICtx: pointer to the WLAN DAL context
15396 pEventData: pointer to the event information structure
15397
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 @see
15399 @return Result of the function call
15400*/
15401WDI_Status
15402WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015403(
Jeff Johnson295189b2012-06-20 16:38:30 -070015404 WDI_ControlBlockType* pWDICtx,
15405 WDI_EventInfoType* pEventData
15406)
15407{
15408 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15409 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015410 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015411 wpt_uint16 usDataOffset = 0;
15412 wpt_uint16 usSendSize = 0;
15413 tHalHostOffloadReq hostOffloadParams;
15414 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015415 wpt_uint8 ucCurrentBSSSesIdx = 0;
15416 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015417
15418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15419
15420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 -------------------------------------------------------------------------*/
15423 if (( NULL == pEventData ) ||
15424 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15425 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15426 {
15427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015429 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015430 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 }
15432
15433 /*-----------------------------------------------------------------------
15434 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015435 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15439 &pSendBuffer, &usDataOffset, &usSendSize))||
15440 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15441 {
15442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015443 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015444 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15445 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015446 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 }
15448
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015449 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15450 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15451 &pBSSSes);
15452 if ( NULL == pBSSSes )
15453 {
c_hpothu86feba52014-10-28 15:51:18 +053015454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015455 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15456 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015457 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015458 }
15459
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15461 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015462
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15464 {
15465 // ARP Offload
15466 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15467 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15468 4);
15469 }
15470 else
15471 {
15472 // NS Offload
15473 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15474 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15475 16);
15476
15477#ifdef WLAN_NS_OFFLOAD
15478 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15479 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15480 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15481 16);
15482 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15483 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15484 16);
15485 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15486 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15487 16);
15488 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15489 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15490 16);
15491 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15492 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15493 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015494 nsOffloadParams.srcIPv6AddrValid =
15495 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15496
15497 nsOffloadParams.targetIPv6Addr1Valid =
15498 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15499
15500 nsOffloadParams.targetIPv6Addr2Valid =
15501 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15502
15503 nsOffloadParams.slotIndex =
15504 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015505
Jeff Johnson295189b2012-06-20 16:38:30 -070015506#endif // WLAN_NS_OFFLOAD
15507 }
15508
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015509 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15510
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 // copy hostOffloadParams into pSendBuffer
15512 wpalMemoryCopy( pSendBuffer+usDataOffset,
15513 &hostOffloadParams,
15514 sizeof(hostOffloadParams));
15515
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015516 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015518 // copy nsOffloadParams into pSendBuffer
15519 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015520 &nsOffloadParams,
15521 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015522 }
15523 else
15524 {
15525#ifdef WLAN_NS_OFFLOAD
15526 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15527 {
15528 // copy nsOffloadParams into pSendBuffer
15529 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15530 &nsOffloadParams,
15531 sizeof(nsOffloadParams));
15532 }
15533#endif
15534 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015535
15536 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015538
15539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15543 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015544
15545fail:
15546 // Release the message buffer so we don't leak
15547 wpalMemoryFree(pSendBuffer);
15548
15549failRequest:
15550 //WDA should have failure check to avoid the memory leak
15551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015552}/*WDI_ProcessHostOffloadReq*/
15553
15554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015557
15558 @param pWDICtx: pointer to the WLAN DAL context
15559 pEventData: pointer to the event information structure
15560
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 @see
15562 @return Result of the function call
15563*/
15564WDI_Status
15565WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015566(
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 WDI_ControlBlockType* pWDICtx,
15568 WDI_EventInfoType* pEventData
15569)
15570{
15571 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15572 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 wpt_uint16 usDataOffset = 0;
15575 wpt_uint16 usSendSize = 0;
15576 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015577 wpt_uint8 ucCurrentBSSSesIdx = 0;
15578 WDI_BSSSessionType* pBSSSes = NULL;
15579
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15581
15582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 -------------------------------------------------------------------------*/
15585 if (( NULL == pEventData ) ||
15586 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15587 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15588 {
15589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15590 "Invalid parameters in Keep Alive req");
15591 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015592 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 }
15594
15595 /*-----------------------------------------------------------------------
15596 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 sizeof(keepAliveReq),
15601 &pSendBuffer, &usDataOffset, &usSendSize))||
15602 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15603 {
15604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015605 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15607 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015608 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 }
15610
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015611 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15612 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15613 &pBSSSes);
15614 if ( NULL == pBSSSes )
15615 {
15616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015617 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015618 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015619 }
15620
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15622 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15623
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015624 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015625
Jeff Johnson295189b2012-06-20 16:38:30 -070015626 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15627 {
15628 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15629 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15630 HAL_IPV4_ADDR_LEN);
15631 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15632 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 wpalMemoryCopy(keepAliveReq.destMacAddr,
15635 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15636 HAL_MAC_ADDR_LEN);
15637 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015638
15639 wpalMemoryCopy( pSendBuffer+usDataOffset,
15640 &keepAliveReq,
15641 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015642
15643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015644 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015645
15646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015647 "Process keep alive req time period %d",
15648 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015649
15650 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015651 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015652
15653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15654 "Sending keep alive req to HAL");
15655
15656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015657 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015658 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15660 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015661
15662fail:
15663 // Release the message buffer so we don't leak
15664 wpalMemoryFree(pSendBuffer);
15665
15666failRequest:
15667 //WDA should have failure check to avoid the memory leak
15668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015669}/*WDI_ProcessKeepAliveReq*/
15670
15671
15672/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015675
15676 @param pWDICtx: pointer to the WLAN DAL context
15677 pEventData: pointer to the event information structure
15678
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 @see
15680 @return Result of the function call
15681*/
15682WDI_Status
15683WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015684(
Jeff Johnson295189b2012-06-20 16:38:30 -070015685 WDI_ControlBlockType* pWDICtx,
15686 WDI_EventInfoType* pEventData
15687)
15688{
15689 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15690 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 wpt_uint16 usDataOffset = 0;
15693 wpt_uint16 usSendSize = 0;
15694 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015695 wpt_uint8 ucCurrentBSSSesIdx = 0;
15696 WDI_BSSSessionType* pBSSSes = NULL;
15697
Jeff Johnson295189b2012-06-20 16:38:30 -070015698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15699
15700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 -------------------------------------------------------------------------*/
15703 if (( NULL == pEventData ) ||
15704 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15705 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15706 {
15707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015710 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 }
15712
15713 /*-----------------------------------------------------------------------
15714 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015715 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 sizeof(wowlAddBcPtrnReq),
15719 &pSendBuffer, &usDataOffset, &usSendSize))||
15720 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15721 {
15722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015723 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15725 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015726 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 }
15728
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015729 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15730 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15731 &pBSSSes);
15732 if ( NULL == pBSSSes )
15733 {
15734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015735 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015736 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015737 }
15738
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015741 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15747
15748 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15749 {
15750 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15751 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15752 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15753 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15754 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15755 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15756 }
15757 else
15758 {
15759 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15760 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15761 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15762 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15763 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15764 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15765
15766 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15767 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15768 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15769 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15770 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15771 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15772 }
15773
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015774 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15775
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 wpalMemoryCopy( pSendBuffer+usDataOffset,
15777 &wowlAddBcPtrnReq,
15778 sizeof(wowlAddBcPtrnReq));
15779
15780 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015781 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015782
15783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015786 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15787 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015788fail:
15789 // Release the message buffer so we don't leak
15790 wpalMemoryFree(pSendBuffer);
15791
15792failRequest:
15793 //WDA should have failure check to avoid the memory leak
15794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015795}/*WDI_ProcessWowlAddBcPtrnReq*/
15796
15797/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015800
15801 @param pWDICtx: pointer to the WLAN DAL context
15802 pEventData: pointer to the event information structure
15803
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 @see
15805 @return Result of the function call
15806*/
15807WDI_Status
15808WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015809(
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 WDI_ControlBlockType* pWDICtx,
15811 WDI_EventInfoType* pEventData
15812)
15813{
15814 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15815 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 wpt_uint16 usDataOffset = 0;
15818 wpt_uint16 usSendSize = 0;
15819 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015820 wpt_uint8 ucCurrentBSSSesIdx = 0;
15821 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15823
15824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 -------------------------------------------------------------------------*/
15827 if (( NULL == pEventData ) ||
15828 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15829 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15830 {
15831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015833 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015834 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 }
15836
15837 /*-----------------------------------------------------------------------
15838 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015839 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 sizeof(wowlDelBcPtrnReq),
15843 &pSendBuffer, &usDataOffset, &usSendSize))||
15844 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15845 {
15846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015847 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15849 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015850 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 }
15852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015853 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15854 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15855 &pBSSSes);
15856 if ( NULL == pBSSSes )
15857 {
15858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015859 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015860 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015861 }
15862
Jeff Johnsone7245742012-09-05 17:12:55 -070015863 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015864 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015865
15866 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15867
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 wpalMemoryCopy( pSendBuffer+usDataOffset,
15869 &wowlDelBcPtrnReq,
15870 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015871
15872 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015874
15875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015876 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015877 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015878 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15879 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015880
15881fail:
15882 // Release the message buffer so we don't leak
15883 wpalMemoryFree(pSendBuffer);
15884
15885failRequest:
15886 //WDA should have failure check to avoid the memory leak
15887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015888}/*WDI_ProcessWowlDelBcPtrnReq*/
15889
15890/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015893
15894 @param pWDICtx: pointer to the WLAN DAL context
15895 pEventData: pointer to the event information structure
15896
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 @see
15898 @return Result of the function call
15899*/
15900WDI_Status
15901WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015902(
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 WDI_ControlBlockType* pWDICtx,
15904 WDI_EventInfoType* pEventData
15905)
15906{
15907 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15908 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015909 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 wpt_uint16 usDataOffset = 0;
15911 wpt_uint16 usSendSize = 0;
15912 tHalWowlEnterParams wowlEnterReq;
15913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15914
15915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 -------------------------------------------------------------------------*/
15918 if (( NULL == pEventData ) ||
15919 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15920 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15921 {
15922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 }
15927
15928 /*-----------------------------------------------------------------------
15929 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 sizeof(wowlEnterReq),
15934 &pSendBuffer, &usDataOffset, &usSendSize))||
15935 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15936 {
15937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015938 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015942 }
15943
Kumar Anandaca924e2013-07-22 14:35:34 -070015944 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15945
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015952 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015954 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015955 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015956 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015960 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015961 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15962
15963#ifdef WLAN_WAKEUP_EVENTS
15964 wowlEnterReq.ucWoWEAPIDRequestEnable =
15965 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15966
15967 wowlEnterReq.ucWoWEAPOL4WayEnable =
15968 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15969
15970 wowlEnterReq.ucWowNetScanOffloadMatch =
15971 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15972
15973 wowlEnterReq.ucWowGTKRekeyError =
15974 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15975
15976 wowlEnterReq.ucWoWBSSConnLoss =
15977 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15978#endif // WLAN_WAKEUP_EVENTS
15979
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015980 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15981
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15983 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15984 sizeof(tSirMacAddr));
15985
Jeff Johnsone7245742012-09-05 17:12:55 -070015986 wpalMemoryCopy( pSendBuffer+usDataOffset,
15987 &wowlEnterReq,
15988 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015989
15990 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015992
15993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15997 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015998}/*WDI_ProcessWowlEnterReq*/
15999
16000/**
16001 @brief Process Wowl exit Request function (called when Main FSM
16002 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016003
16004 @param pWDICtx: pointer to the WLAN DAL context
16005 pEventData: pointer to the event information structure
16006
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 @see
16008 @return Result of the function call
16009*/
16010WDI_Status
16011WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016012(
Jeff Johnson295189b2012-06-20 16:38:30 -070016013 WDI_ControlBlockType* pWDICtx,
16014 WDI_EventInfoType* pEventData
16015)
16016{
16017 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016018 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016019 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 wpt_uint16 usDataOffset = 0;
16021 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016022 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070016023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16024
16025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016027 -------------------------------------------------------------------------*/
16028 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016029 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
16031 {
16032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 }
16037
16038 /*-----------------------------------------------------------------------
16039 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016040 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016041 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016043 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070016044 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016045 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070016046 {
16047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016048 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016049 pEventData, wdiWowlExitCb);
16050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016052 }
16053
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016054 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
16055
16056 wpalMemoryCopy( pSendBuffer+usDataOffset,
16057 &wowlExitparams,
16058 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016060 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016061 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016062 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16063 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016064}/*WDI_ProcessWowlExitReq*/
16065
16066/**
16067 @brief Process Configure Apps Cpu Wakeup State Request function
16068 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016069
16070 @param pWDICtx: pointer to the WLAN DAL context
16071 pEventData: pointer to the event information structure
16072
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 @see
16074 @return Result of the function call
16075*/
16076WDI_Status
16077WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016078(
Jeff Johnson295189b2012-06-20 16:38:30 -070016079 WDI_ControlBlockType* pWDICtx,
16080 WDI_EventInfoType* pEventData
16081)
16082{
16083 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
16084 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 wpt_uint16 usDataOffset = 0;
16087 wpt_uint16 usSendSize = 0;
16088 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
16089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16090
16091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 -------------------------------------------------------------------------*/
16094 if (( NULL == pEventData ) ||
16095 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
16096 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
16097 {
16098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 }
16103
16104 /*-----------------------------------------------------------------------
16105 Get message buffer
16106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 sizeof(halCfgAppsCpuWakeupStateReqParams),
16109 &pSendBuffer, &usDataOffset, &usSendSize))||
16110 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
16111 {
16112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016113 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
16115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016117 }
16118
Jeff Johnsone7245742012-09-05 17:12:55 -070016119 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
16121
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 wpalMemoryCopy( pSendBuffer+usDataOffset,
16123 &halCfgAppsCpuWakeupStateReqParams,
16124 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016125
16126 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016127 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016128
16129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016131 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16133 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
16134 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016135}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
16136
16137#ifdef WLAN_FEATURE_VOWIFI_11R
16138/**
16139 @brief Process Aggregated Add TSpec Request function (called when Main FSM
16140 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016141
16142 @param pWDICtx: pointer to the WLAN DAL context
16143 pEventData: pointer to the event information structure
16144
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 @see
16146 @return Result of the function call
16147*/
16148WDI_Status
16149WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016150(
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 WDI_ControlBlockType* pWDICtx,
16152 WDI_EventInfoType* pEventData
16153)
16154{
16155 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16156 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 wpt_uint16 usDataOffset = 0;
16161 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016162 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016163 wpt_macAddr macBSSID;
16164 tAggrAddTsReq halAggrAddTsReq;
16165 int i;
16166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16167
16168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 -------------------------------------------------------------------------*/
16171 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16172 ( NULL == pEventData->pCBfnc ))
16173 {
16174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 }
16179 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16180 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16181 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16182 /*-------------------------------------------------------------------------
16183 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016184 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016185 -------------------------------------------------------------------------*/
16186 wpalMutexAcquire(&pWDICtx->wptMutex);
16187
16188 /*------------------------------------------------------------------------
16189 Find the BSS for which the request is made and identify WDI session
16190 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16192 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 &macBSSID))
16194 {
16195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016196 "This station does not exist in the WDI Station Table %d",
16197 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 }
16201
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16203 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16206 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16207 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016208
16209 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016210 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016211 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016212
Jeff Johnson295189b2012-06-20 16:38:30 -070016213 /*------------------------------------------------------------------------
16214 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 ------------------------------------------------------------------------*/
16217 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16218 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16220 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16221 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016222
Jeff Johnsone7245742012-09-05 17:12:55 -070016223 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 }
16227
16228 wpalMutexRelease(&pWDICtx->wptMutex);
16229 /*-----------------------------------------------------------------------
16230 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016231 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016232 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016233 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 sizeof(tAggrAddTsParams),
16235 &pSendBuffer, &usDataOffset, &usSendSize))||
16236 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16237 {
16238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016239 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 }
16244
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16249
16250 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16251 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016252 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016253 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016254 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016256 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16258 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16261 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16264 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016265 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16267 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016269 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16270 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016271 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16273 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16276 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016277 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16279 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016280 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016281 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016284
16285
16286 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016290 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016292 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016294 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016296 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016297 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016298 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016299 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016300 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016301 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016304 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016305 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016307 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016308 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016311 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16316 }
16317
Jeff Johnsone7245742012-09-05 17:12:55 -070016318 wpalMemoryCopy( pSendBuffer+usDataOffset,
16319 &halAggrAddTsReq,
16320 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016321
16322 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016323 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016324
16325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016326 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016328 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016331}/*WDI_ProcessAggrAddTSpecReq*/
16332#endif /* WLAN_FEATURE_VOWIFI_11R */
16333
16334/**
16335 @brief Process Shutdown Request function (called when Main FSM
16336 allows it)
16337
16338 @param pWDICtx: pointer to the WLAN DAL context
16339 pEventData: pointer to the event information structure
16340
16341 @see
16342 @return Result of the function call
16343*/
16344WDI_Status
16345WDI_ProcessShutdownReq
16346(
16347 WDI_ControlBlockType* pWDICtx,
16348 WDI_EventInfoType* pEventData
16349 )
16350{
16351 wpt_status wptStatus;
16352
16353
16354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16355
16356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016358 -------------------------------------------------------------------------*/
16359 if ( NULL == pEventData )
16360 {
16361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 WDI_ASSERT(0);
16364 return WDI_STATUS_E_FAILURE;
16365 }
16366
16367 wpalMutexAcquire(&pWDICtx->wptMutex);
16368
16369
16370 gWDIInitialized = eWLAN_PAL_FALSE;
16371 /*! TO DO: stop the data services */
16372 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16373 {
16374 /*Stop the STA Table !UT- check this logic again
16375 It is safer to do it here than on the response - because a stop is imminent*/
16376 WDI_STATableStop(pWDICtx);
16377
16378 /* Stop Transport Driver, DXE */
16379 WDTS_Stop(pWDICtx);
16380 }
16381
16382 /*Clear all pending request*/
16383 WDI_ClearPendingRequests(pWDICtx);
16384 /* Close Data transport*/
16385 /* FTM mode does not open Data Path */
16386 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16387 {
16388 WDTS_Close(pWDICtx);
16389 }
16390 /*Close the STA Table !UT- check this logic again*/
16391 WDI_STATableClose(pWDICtx);
16392 /*close the PAL */
16393 wptStatus = wpalClose(pWDICtx->pPALContext);
16394 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16395 {
16396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16397 "Failed to wpal Close %d", wptStatus);
16398 WDI_ASSERT(0);
16399 }
16400
16401 /*Transition back to init state*/
16402 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16403
16404 wpalMutexRelease(&pWDICtx->wptMutex);
16405
16406 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016407 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016408
16409
Jeff Johnsone7245742012-09-05 17:12:55 -070016410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016411}/*WDI_ProcessShutdownReq*/
16412
16413/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016414 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016415========================================================================*/
16416
16417/**
16418 @brief Process Start Response function (called when a response
16419 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016420
16421 @param pWDICtx: pointer to the WLAN DAL context
16422 pEventData: pointer to the event information structure
16423
Jeff Johnson295189b2012-06-20 16:38:30 -070016424 @see
16425 @return Result of the function call
16426*/
16427WDI_Status
16428WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016429(
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 WDI_ControlBlockType* pWDICtx,
16431 WDI_EventInfoType* pEventData
16432)
16433{
16434 WDI_StartRspParamsType wdiRspParams;
16435 WDI_StartRspCb wdiStartRspCb = NULL;
16436
16437 tHalMacStartRspParams* startRspParams;
16438
16439#ifndef HAL_SELF_STA_PER_BSS
16440 WDI_AddStaParams wdiAddSTAParam = {0};
16441#endif
16442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16443
Jeff Johnsone7245742012-09-05 17:12:55 -070016444 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016446 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016447 -------------------------------------------------------------------------*/
16448 if (( NULL == pEventData ) ||
16449 ( NULL == pEventData->pEventData) ||
16450 ( NULL == wdiStartRspCb ))
16451 {
16452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016456 }
16457
16458 /*-------------------------------------------------------------------------
16459 Extract response and send it to UMAC
16460 -------------------------------------------------------------------------*/
16461 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16462 {
16463 // not enough data was received
16464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016465 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016466 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 }
16470
16471 /*-------------------------------------------------------------------------
16472 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016473 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016474 -------------------------------------------------------------------------*/
16475 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16476
16477 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16478 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16479 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16480 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16481 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16482 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16483 wdiRspParams.wlanReportedVersion.major =
16484 startRspParams->wcnssWlanVersion.major;
16485 wdiRspParams.wlanReportedVersion.minor =
16486 startRspParams->wcnssWlanVersion.minor;
16487 wdiRspParams.wlanReportedVersion.version =
16488 startRspParams->wcnssWlanVersion.version;
16489 wdiRspParams.wlanReportedVersion.revision =
16490 startRspParams->wcnssWlanVersion.revision;
16491 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16492 startRspParams->wcnssCrmVersionString,
16493 sizeof(wdiRspParams.wcnssSoftwareVersion));
16494 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16495 startRspParams->wcnssWlanVersionString,
16496 sizeof(wdiRspParams.wcnssHardwareVersion));
16497 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16498
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016499 /*Save the HAL Version*/
16500 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16501
Jeff Johnson295189b2012-06-20 16:38:30 -070016502 wpalMutexAcquire(&pWDICtx->wptMutex);
16503 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16504 {
16505 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16506
16507 /*Cache the start response for further use*/
16508 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 sizeof(pWDICtx->wdiCachedStartRspParams));
16511
16512 }
16513 else
16514 {
16515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16516 "Failed to start device with status %s(%d)",
16517 WDI_getHALStatusMsgString(startRspParams->status),
16518 startRspParams->status);
16519
16520 /*Set the expected state transition to stopped - because the start has
16521 failed*/
16522 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16523
16524 wpalMutexRelease(&pWDICtx->wptMutex);
16525
16526 /*Notify UMAC*/
16527 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016528
Jeff Johnson295189b2012-06-20 16:38:30 -070016529 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016530 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016531
16532 /*Although the response is an error - it was processed by our function
16533 so as far as the caller is concerned this is a succesful reponse processing*/
16534 return WDI_STATUS_SUCCESS;
16535 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016536
Jeff Johnson295189b2012-06-20 16:38:30 -070016537 wpalMutexRelease(&pWDICtx->wptMutex);
16538
16539 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16540 {
16541 /* FTM mode does not need to execute below */
16542 /* Notify UMAC */
16543 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16544 return WDI_STATUS_SUCCESS;
16545 }
16546
16547 /* START the Data transport */
16548 WDTS_startTransport(pWDICtx);
16549
16550 /*Start the STA Table !- check this logic again*/
16551 WDI_STATableStart(pWDICtx);
16552
16553#ifndef HAL_SELF_STA_PER_BSS
16554 /* Store the Self STA Index */
16555 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16556
16557 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16558 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16559 WDI_MAC_ADDR_LEN);
16560
16561 /* At this point add the self-STA */
16562
16563 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16564 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16565 /*! TO DO: wdiAddSTAParam.dpuSig */
16566 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16567 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16568 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16569
16570 //all DPU indices are the same for self STA
16571 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16572 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016573 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16575 WDI_MAC_ADDR_LEN);
16576 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16577 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16578
16579 /* Note: Since we don't get an explicit config STA request for self STA, we
16580 add the self STA upon receiving the Start response message. But the
16581 self STA entry in the table is deleted when WDI gets an explicit delete STA
16582 request */
16583 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16584#endif
16585
16586 /*Notify UMAC*/
16587 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16588
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016590}/*WDI_ProcessStartRsp*/
16591
16592
16593/**
16594 @brief Process Stop Response function (called when a response
16595 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016596
16597 @param pWDICtx: pointer to the WLAN DAL context
16598 pEventData: pointer to the event information structure
16599
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 @see
16601 @return Result of the function call
16602*/
16603WDI_Status
16604WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016605(
Jeff Johnson295189b2012-06-20 16:38:30 -070016606 WDI_ControlBlockType* pWDICtx,
16607 WDI_EventInfoType* pEventData
16608)
16609{
16610 WDI_Status wdiStatus;
16611 WDI_StopRspCb wdiStopRspCb = NULL;
16612
Jeff Johnsone7245742012-09-05 17:12:55 -070016613 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16615
Jeff Johnsone7245742012-09-05 17:12:55 -070016616 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 -------------------------------------------------------------------------*/
16620 if (( NULL == pEventData ) ||
16621 ( NULL == pEventData->pEventData) ||
16622 ( NULL == wdiStopRspCb ))
16623 {
16624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 }
16629
16630 /*-------------------------------------------------------------------------
16631 Extract response and send it to UMAC
16632 -------------------------------------------------------------------------*/
16633 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16634 {
16635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016636 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016637 pEventData->uEventDataSize);
16638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 }
16641
16642 /*-------------------------------------------------------------------------
16643 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16647 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 sizeof(halMacStopRspMsg.stopRspParams));
16649
Jeff Johnsone7245742012-09-05 17:12:55 -070016650 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016651
16652 wpalMutexAcquire(&pWDICtx->wptMutex);
16653
16654 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016656 --------------------------------------------------------------------------*/
16657 if ( WDI_STATUS_SUCCESS != wdiStatus )
16658 {
16659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16660 "Failed to stop the device with status %s (%d)",
16661 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16662 halMacStopRspMsg.stopRspParams.status);
16663
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016665 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016666
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016669 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016670
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16672
16673 /*Transition now as WDI may get preempted imediately after it sends
16674 up the Stop Response and it will not get to process the state transition
16675 from Main Rsp function*/
16676 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16677 wpalMutexRelease(&pWDICtx->wptMutex);
16678
16679 /*! TO DO: - STOP the Data transport */
16680
16681 /*Notify UMAC*/
16682 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16683
Jeff Johnsone7245742012-09-05 17:12:55 -070016684 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016685}/*WDI_ProcessStopRsp*/
16686
16687/**
16688 @brief Process Close Rsp function (called when a response
16689 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016690
16691 @param pWDICtx: pointer to the WLAN DAL context
16692 pEventData: pointer to the event information structure
16693
Jeff Johnson295189b2012-06-20 16:38:30 -070016694 @see
16695 @return Result of the function call
16696*/
16697WDI_Status
16698WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016699(
Jeff Johnson295189b2012-06-20 16:38:30 -070016700 WDI_ControlBlockType* pWDICtx,
16701 WDI_EventInfoType* pEventData
16702)
16703{
16704 /*There is no close response comming from HAL - function just kept for
16705 simmetry */
16706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016708}/*WDI_ProcessCloseRsp*/
16709
16710
16711/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016712 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016713============================================================================*/
16714
16715/**
16716 @brief Process Init Scan Rsp function (called when a response
16717 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016718
16719 @param pWDICtx: pointer to the WLAN DAL context
16720 pEventData: pointer to the event information structure
16721
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 @see
16723 @return Result of the function call
16724*/
16725WDI_Status
16726WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016727(
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 WDI_ControlBlockType* pWDICtx,
16729 WDI_EventInfoType* pEventData
16730)
16731{
16732 WDI_Status wdiStatus;
16733 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016734 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016735 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16737
16738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 -------------------------------------------------------------------------*/
16741 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16742 ( NULL == pEventData->pEventData))
16743 {
16744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016748 }
16749
16750 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16751 if( NULL == wdiInitScanRspCb)
16752 {
16753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016754 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 }
16758
16759 /*-------------------------------------------------------------------------
16760 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016763 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16764 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 sizeof(halInitScanRspMsg.initScanRspParams));
16766
Jeff Johnsone7245742012-09-05 17:12:55 -070016767 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016768
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016769 if (pWDICtx->bInBmps && (WDI_STATUS_SUCCESS == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 {
16771 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016772 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16773 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016775 "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 -080016776 WDI_ASSERT(0);
16777 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 }
Abhishek Singha7d80b12016-02-03 15:27:20 +053016779 else if (WDI_STATUS_SUCCESS != wdiStatus)
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016780 {
16781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16782 "Error returned WDI_ProcessInitScanRspi:%d BMPS%d",
16783 wdiStatus, pWDICtx->bInBmps);
16784 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016785
16786 /*Notify UMAC*/
16787 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16788
Jeff Johnsone7245742012-09-05 17:12:55 -070016789 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016790}/*WDI_ProcessInitScanRsp*/
16791
16792
16793/**
16794 @brief Process Start Scan Rsp function (called when a response
16795 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016796
16797 @param pWDICtx: pointer to the WLAN DAL context
16798 pEventData: pointer to the event information structure
16799
Jeff Johnson295189b2012-06-20 16:38:30 -070016800 @see
16801 @return Result of the function call
16802*/
16803WDI_Status
16804WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016805(
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 WDI_ControlBlockType* pWDICtx,
16807 WDI_EventInfoType* pEventData
16808)
16809{
16810 WDI_StartScanRspParamsType wdiStartScanParams;
16811 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016812
16813 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16815
16816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 -------------------------------------------------------------------------*/
16819 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16820 ( NULL == pEventData->pEventData))
16821 {
16822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016826 }
16827
16828 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16829 if( NULL == wdiStartScanRspCb)
16830 {
16831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016832 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 }
16836
16837 /*-------------------------------------------------------------------------
16838 Extract response and send it to UMAC
16839 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16841 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 sizeof(halStartScanRspMsg.startScanRspParams));
16843
16844 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16845 halStartScanRspMsg.startScanRspParams.status);
16846#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016847 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 halStartScanRspMsg.startScanRspParams.startTSF,
16851 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016852#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016853
16854 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16855 {
16856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16857 "Start scan failed with status %s (%d)",
16858 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16859 halStartScanRspMsg.startScanRspParams.status);
16860 /* send the status to UMAC, don't return from here*/
16861 }
16862
16863 /*Notify UMAC*/
16864 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16865
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016867
16868}/*WDI_ProcessStartScanRsp*/
16869
16870
16871/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016874
16875 @param pWDICtx: pointer to the WLAN DAL context
16876 pEventData: pointer to the event information structure
16877
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 @see
16879 @return Result of the function call
16880*/
16881WDI_Status
16882WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016883(
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 WDI_ControlBlockType* pWDICtx,
16885 WDI_EventInfoType* pEventData
16886)
16887{
16888 WDI_Status wdiStatus;
16889 tHalEndScanRspMsg halEndScanRspMsg;
16890 WDI_EndScanRspCb wdiEndScanRspCb;
16891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16892
16893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 -------------------------------------------------------------------------*/
16896 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16897 ( NULL == pEventData->pEventData))
16898 {
16899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016900 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 }
16904
16905 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16906
16907 /*-------------------------------------------------------------------------
16908 Extract response and send it to UMAC
16909 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016910 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16911 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 sizeof(halEndScanRspMsg.endScanRspParams));
16913
Jeff Johnsone7245742012-09-05 17:12:55 -070016914 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016915
16916 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16917 {
16918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16919 "End Scan failed with status %s (%d )",
16920 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16921 halEndScanRspMsg.endScanRspParams.status);
16922 /* send the status to UMAC, don't return from here*/
16923 }
16924
16925 /*Notify UMAC*/
16926 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16927
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016929}/*WDI_ProcessEndScanRsp*/
16930
16931
16932/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016935
16936 @param pWDICtx: pointer to the WLAN DAL context
16937 pEventData: pointer to the event information structure
16938
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 @see
16940 @return Result of the function call
16941*/
16942WDI_Status
16943WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016944(
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 WDI_ControlBlockType* pWDICtx,
16946 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016947)
Jeff Johnson295189b2012-06-20 16:38:30 -070016948{
16949 WDI_Status wdiStatus;
16950 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016951
16952 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16954
16955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016956 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 -------------------------------------------------------------------------*/
16958 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16959 ( NULL == pEventData->pEventData))
16960 {
16961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 }
16966
16967 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16968
16969 /*-------------------------------------------------------------------------
16970 Extract response and send it to UMAC
16971 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016972 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16973 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16975
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016977
16978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016979 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016980 halFinishScanRspMsg.finishScanRspParams.status);
16981
16982 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16983 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16984 {
16985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16986 "Finish Scan failed with status %s (%d)",
16987 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16988 halFinishScanRspMsg.finishScanRspParams.status);
16989 /* send the status to UMAC, don't return from here*/
16990 }
16991
16992 /*Notify UMAC*/
16993 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16994
Jeff Johnsone7245742012-09-05 17:12:55 -070016995 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016996}/*WDI_ProcessFinishScanRsp*/
16997
16998/**
16999 @brief Process Join Response function (called when a response
17000 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017001
17002 @param pWDICtx: pointer to the WLAN DAL context
17003 pEventData: pointer to the event information structure
17004
Jeff Johnson295189b2012-06-20 16:38:30 -070017005 @see
17006 @return Result of the function call
17007*/
17008WDI_Status
17009WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017010(
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 WDI_ControlBlockType* pWDICtx,
17012 WDI_EventInfoType* pEventData
17013)
17014{
17015 WDI_Status wdiStatus;
17016 WDI_JoinRspCb wdiJoinRspCb;
17017 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017018
17019 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17021
17022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 -------------------------------------------------------------------------*/
17025 if (( NULL == pWDICtx ) ||
17026 ( NULL == pWDICtx->pfncRspCB ) ||
17027 ( NULL == pEventData ) ||
17028 ( NULL == pEventData->pEventData))
17029 {
17030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 }
17035
17036 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
17037
17038 /*-------------------------------------------------------------------------
17039 Extract response and send it to UMAC
17040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
17042 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 sizeof(halJoinRspMsg.joinRspParams));
17044
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017046
17047 wpalMutexAcquire(&pWDICtx->wptMutex);
17048
17049 /*-----------------------------------------------------------------------
17050 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017053 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17055 {
17056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070017057 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
17058 "association no longer in progress %d - mysterious HAL response",
17059 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070017060
Jeff Johnsone7245742012-09-05 17:12:55 -070017061 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 }
17065
17066 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
17067
17068 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017069 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 -----------------------------------------------------------------------*/
17071 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17072 {
17073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17074 "Join only allowed in Joining state - failure state is %d "
17075 "strange HAL response", pBSSSes->wdiAssocState);
17076
Jeff Johnsone7245742012-09-05 17:12:55 -070017077 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17078
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 }
17082
17083
17084 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017085 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017086 -----------------------------------------------------------------------*/
17087 if ( WDI_STATUS_SUCCESS != wdiStatus )
17088 {
17089 /*Association was failed by HAL - remove session*/
17090 WDI_DeleteSession(pWDICtx, pBSSSes);
17091
17092 /*Association no longer in progress */
17093 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17094
17095 /*Association no longer in progress - prepare pending assoc for processing*/
17096 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070017097
Jeff Johnson295189b2012-06-20 16:38:30 -070017098 }
17099 else
17100 {
17101 /*Transition to state Joining - this may be redundant as we are supposed
17102 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 }
17105
17106 wpalMutexRelease(&pWDICtx->wptMutex);
17107
17108 /*Notify UMAC*/
17109 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17110
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017112}/*WDI_ProcessJoinRsp*/
17113
17114
17115/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017118
17119 @param pWDICtx: pointer to the WLAN DAL context
17120 pEventData: pointer to the event information structure
17121
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 @see
17123 @return Result of the function call
17124*/
17125WDI_Status
17126WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017127(
Jeff Johnson295189b2012-06-20 16:38:30 -070017128 WDI_ControlBlockType* pWDICtx,
17129 WDI_EventInfoType* pEventData
17130)
17131{
17132 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
17133 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017134 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 WDI_BSSSessionType* pBSSSes = NULL;
17136
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017138 WDI_AddStaParams wdiBcastAddSTAParam = {0};
17139 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070017140
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17142
17143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017145 -------------------------------------------------------------------------*/
17146 if (( NULL == pEventData ) ||
17147 ( NULL == pEventData->pEventData))
17148 {
17149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 }
17154
17155 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17156
17157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017158 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017159 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017160 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17161 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 sizeof(halConfigBssRspMsg.configBssRspParams));
17163
17164 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17165 halConfigBssRspMsg.configBssRspParams.status);
17166 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17167 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017168 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17170 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017171
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017173
17174 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017176
17177 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017179
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017181
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17185 #endif
17186 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17187 halConfigBssRspMsg.configBssRspParams.staMac,
17188 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017189
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 wpalMutexAcquire(&pWDICtx->wptMutex);
17191 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017192 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017193 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17195 wdiConfigBSSParams.macBSSID,
17196 &pBSSSes);
17197
Jeff Johnson295189b2012-06-20 16:38:30 -070017198 /*-----------------------------------------------------------------------
17199 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017200 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017201 -----------------------------------------------------------------------*/
17202 if ( NULL == pBSSSes )
17203 {
17204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17205 "Association sequence for this BSS does not yet exist "
17206 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017207
17208 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17209
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017211 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017213
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 /*Save data for this BSS*/
17215 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17216 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017217 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017219 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017220 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017221 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017222 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017223 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017224 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017225 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017226 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17227 pBSSSes->bcastStaIdx =
17228 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017229
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017231
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 /*-------------------------------------------------------------------------
17233 Add Peer STA
17234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017235 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17237 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017238
Jeff Johnson295189b2012-06-20 16:38:30 -070017239 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017240 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017241 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017242 wdiAddSTAParam.ucHTCapable =
17243 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17244 wdiAddSTAParam.ucStaType =
17245 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17246
Jeff Johnson295189b2012-06-20 16:38:30 -070017247 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017248 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17249 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017251
17252 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17253 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17254 WDI_MAC_ADDR_LEN);
17255
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017257 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017258 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017263 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017265 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017266 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017267 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017268 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017269
Jeff Johnson295189b2012-06-20 16:38:30 -070017270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17271 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017272
Jeff Johnson295189b2012-06-20 16:38:30 -070017273 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17274 /*-------------------------------------------------------------------------
17275 Add Broadcast STA only in AP mode
17276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017278 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 {
17280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17281 "Add BCAST STA to table for index: %d",
17282 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017283
17284 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017286
Jeff Johnson295189b2012-06-20 16:38:30 -070017287 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17288 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17289 }
17290 wpalMutexRelease(&pWDICtx->wptMutex);
17291 }
17292 else
17293 {
17294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17295 "Config BSS RSP failed with status : %s(%d)",
17296 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017297 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017298 halConfigBssRspMsg.configBssRspParams.status);
17299
Jeff Johnsone7245742012-09-05 17:12:55 -070017300
Jeff Johnson295189b2012-06-20 16:38:30 -070017301 /*Association was failed by HAL - remove session*/
17302 WDI_DeleteSession(pWDICtx, pBSSSes);
17303
17304 /*Association no longer in progress */
17305 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17306
17307 /*Association no longer in progress - prepare pending assoc for processing*/
17308 WDI_DequeueAssocRequest(pWDICtx);
17309
17310 }
17311
17312 /*Notify UMAC*/
17313 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17314
Jeff Johnsone7245742012-09-05 17:12:55 -070017315 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017316}/*WDI_ProcessConfigBSSRsp*/
17317
17318
17319/**
17320 @brief Process Del BSS Response function (called when a response
17321 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017322
17323 @param pWDICtx: pointer to the WLAN DAL context
17324 pEventData: pointer to the event information structure
17325
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 @see
17327 @return Result of the function call
17328*/
17329WDI_Status
17330WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017331(
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 WDI_ControlBlockType* pWDICtx,
17333 WDI_EventInfoType* pEventData
17334)
17335{
17336 WDI_DelBSSRspParamsType wdiDelBSSParams;
17337 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017338 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 WDI_BSSSessionType* pBSSSes = NULL;
17340
Jeff Johnsone7245742012-09-05 17:12:55 -070017341 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17343
17344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017346 -------------------------------------------------------------------------*/
17347 if (( NULL == pEventData ) ||
17348 ( NULL == pEventData->pEventData))
17349 {
17350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 }
17355
17356 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17357
17358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017359 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017361 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17362 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 sizeof(halDelBssRspMsg.deleteBssRspParams));
17364
17365
17366 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017367 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017368
17369 wpalMutexAcquire(&pWDICtx->wptMutex);
17370
17371 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017373 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017374 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17375 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17376 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017377
17378 /*-----------------------------------------------------------------------
17379 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 -----------------------------------------------------------------------*/
17382 if ( NULL == pBSSSes )
17383 {
17384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17385 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017386 "association no longer in progress - mysterious HAL response");
17387
17388 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17389
17390 wpalMutexRelease(&pWDICtx->wptMutex);
17391 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017392 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017393
17394 /*Extract BSSID for the response to UMAC*/
17395 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17396 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17397
17398 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17399
17400 /*-----------------------------------------------------------------------
17401 The current session will be deleted
17402 -----------------------------------------------------------------------*/
17403 WDI_DeleteSession(pWDICtx, pBSSSes);
17404
17405
17406 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017407 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17408 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017409 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017410 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017411 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017412
17413 /* Delete the STA's in this BSS */
17414 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17415
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 wpalMutexRelease(&pWDICtx->wptMutex);
17417
17418 /*Notify UMAC*/
17419 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17420
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017422}/*WDI_ProcessDelBSSRsp*/
17423
17424/**
17425 @brief Process Post Assoc Rsp function (called when a response
17426 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017427
17428 @param pWDICtx: pointer to the WLAN DAL context
17429 pEventData: pointer to the event information structure
17430
Jeff Johnson295189b2012-06-20 16:38:30 -070017431 @see
17432 @return Result of the function call
17433*/
17434WDI_Status
17435WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017436(
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 WDI_ControlBlockType* pWDICtx,
17438 WDI_EventInfoType* pEventData
17439)
17440{
17441 WDI_PostAssocRspParamsType wdiPostAssocParams;
17442 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17447
17448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017450 -------------------------------------------------------------------------*/
17451 if (( NULL == pEventData ) ||
17452 ( NULL == pEventData->pEventData))
17453 {
17454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017458 }
17459
17460 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17461
17462 /*-------------------------------------------------------------------------
17463 Extract response and send it to UMAC
17464 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017465 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17466 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017467 sizeof(halPostAssocRspMsg.postAssocRspParams));
17468
17469 /*Extract the Post Assoc STA Params */
17470
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017472 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017473 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017474 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017475 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17477
Jeff Johnsone7245742012-09-05 17:12:55 -070017478 wdiPostAssocParams.wdiStatus =
17479 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017480
17481 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17482 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017483 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17484 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 WDI_MAC_ADDR_LEN);
17486
17487 /* Extract Post Assoc BSS Params */
17488
Jeff Johnsone7245742012-09-05 17:12:55 -070017489 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17490 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17491 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017492
17493 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17494 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017495 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17497 .macSTA, WDI_MAC_ADDR_LEN);
17498
Jeff Johnsone7245742012-09-05 17:12:55 -070017499 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17501
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17504
17505 wdiPostAssocParams.bssParams.ucBSSIdx =
17506 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17507
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17510
17511 wpalMutexAcquire(&pWDICtx->wptMutex);
17512
17513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017514 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017519
17520 /*-----------------------------------------------------------------------
17521 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 -----------------------------------------------------------------------*/
17524 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017525 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17527 {
17528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17529 "Association sequence for this BSS does not yet exist or "
17530 "association no longer in progress - mysterious HAL response");
17531
Jeff Johnsone7245742012-09-05 17:12:55 -070017532 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17533
Jeff Johnson295189b2012-06-20 16:38:30 -070017534 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017535 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017536 }
17537
17538 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 -----------------------------------------------------------------------*/
17541 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17542 {
17543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17544 "Post Assoc not allowed before JOIN - failing request "
17545 "strange HAL response");
17546
Jeff Johnsone7245742012-09-05 17:12:55 -070017547 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17548
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017551 }
17552
17553 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 -----------------------------------------------------------------------*/
17556 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17557 {
17558 /*Association was failed by HAL - remove session*/
17559 WDI_DeleteSession(pWDICtx, pBSSSes);
17560 }
17561 else
17562 {
17563 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017564 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017565
17566 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017568 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017569 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017570 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017571 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017573 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017574 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17575
Jeff Johnsone7245742012-09-05 17:12:55 -070017576 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017577 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17578 }
17579
17580 /*Association no longer in progress */
17581 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17582
17583 /*Association no longer in progress - prepare pending assoc for processing*/
17584 WDI_DequeueAssocRequest(pWDICtx);
17585
17586 wpalMutexRelease(&pWDICtx->wptMutex);
17587
17588 /*Notify UMAC*/
17589 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17590
Jeff Johnsone7245742012-09-05 17:12:55 -070017591 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017592}/*WDI_ProcessPostAssocRsp*/
17593
17594/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017595 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017597
17598 @param pWDICtx: pointer to the WLAN DAL context
17599 pEventData: pointer to the event information structure
17600
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 @see
17602 @return Result of the function call
17603*/
17604WDI_Status
17605WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017606(
Jeff Johnson295189b2012-06-20 16:38:30 -070017607 WDI_ControlBlockType* pWDICtx,
17608 WDI_EventInfoType* pEventData
17609)
17610{
17611 WDI_DelSTARspParamsType wdiDelSTARsp;
17612 WDI_DelSTARspCb wdiDelSTARspCb;
17613 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017614 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17616
17617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 -------------------------------------------------------------------------*/
17620 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17621 ( NULL == pEventData->pEventData))
17622 {
17623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017627 }
17628
17629 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17630
17631 /*-------------------------------------------------------------------------
17632 Extract response and send it to UMAC
17633 -------------------------------------------------------------------------*/
17634 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017635 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017636 sizeof(halDelStaRspMsg.delStaRspParams));
17637
17638 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017639 wdiDelSTARsp.wdiStatus =
17640 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017641
17642 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17643
17644 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17645 if(staType == WDI_STA_ENTRY_SELF)
17646 {
17647 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17648
17649 /* At this point add the self-STA */
17650
17651 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17652 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17653 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17654
17655#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17656#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17657
17658 //all DPU indices are the same for self STA
17659 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17660 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17661 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17662 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17663 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17664 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017665
17666 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 }
17668 else
17669 {
17670 //Delete the station in the table
17671 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17672 }
17673
17674 /*Notify UMAC*/
17675 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17676
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017678}/*WDI_ProcessDelSTARsp*/
17679
17680
17681/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017682 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017683==========================================================================*/
17684
17685/**
17686 @brief Process Set BSS Key Rsp function (called when a response
17687 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017688
17689 @param pWDICtx: pointer to the WLAN DAL context
17690 pEventData: pointer to the event information structure
17691
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 @see
17693 @return Result of the function call
17694*/
17695WDI_Status
17696WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017697(
Jeff Johnson295189b2012-06-20 16:38:30 -070017698 WDI_ControlBlockType* pWDICtx,
17699 WDI_EventInfoType* pEventData
17700)
17701{
17702 WDI_Status wdiStatus;
17703 eHalStatus halStatus;
17704 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17706
17707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 -------------------------------------------------------------------------*/
17710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17711 ( NULL == pEventData->pEventData))
17712 {
17713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017717 }
17718
17719 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17720
17721 /*-------------------------------------------------------------------------
17722 Extract response and send it to UMAC
17723 -------------------------------------------------------------------------*/
17724 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017725 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017726
17727 if ( eHAL_STATUS_SUCCESS != halStatus )
17728 {
17729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17730 "Set BSS Key failed with status %s (%d)",
17731 WDI_getHALStatusMsgString(halStatus),
17732 halStatus);
17733 /* send the status to UMAC, don't return from here*/
17734 }
17735
17736 /*Notify UMAC*/
17737 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17738
Jeff Johnsone7245742012-09-05 17:12:55 -070017739 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017740}/*WDI_ProcessSetBssKeyRsp*/
17741
17742/**
17743 @brief Process Remove BSS Key Rsp function (called when a response
17744 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017745
17746 @param pWDICtx: pointer to the WLAN DAL context
17747 pEventData: pointer to the event information structure
17748
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 @see
17750 @return Result of the function call
17751*/
17752WDI_Status
17753WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017754(
Jeff Johnson295189b2012-06-20 16:38:30 -070017755 WDI_ControlBlockType* pWDICtx,
17756 WDI_EventInfoType* pEventData
17757)
17758{
17759 WDI_Status wdiStatus;
17760 eHalStatus halStatus;
17761 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17763
17764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017765 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017766 -------------------------------------------------------------------------*/
17767 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17768 ( NULL == pEventData->pEventData))
17769 {
17770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017771 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017774 }
17775
17776 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17777
17778 /*-------------------------------------------------------------------------
17779 Extract response and send it to UMAC
17780 -------------------------------------------------------------------------*/
17781 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017782 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017783
17784 if ( eHAL_STATUS_SUCCESS != halStatus )
17785 {
17786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17787 "Remove BSS Key failed with status %s (%d )",
17788 WDI_getHALStatusMsgString(halStatus),
17789 halStatus);
17790 /* send the status to UMAC, don't return from here*/
17791 }
17792
17793 /*Notify UMAC*/
17794 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17795
Jeff Johnsone7245742012-09-05 17:12:55 -070017796 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017797}/*WDI_ProcessSetBssKeyRsp*/
17798
17799
17800/**
17801 @brief Process Set STA Key Rsp function (called when a response
17802 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017803
17804 @param pWDICtx: pointer to the WLAN DAL context
17805 pEventData: pointer to the event information structure
17806
Jeff Johnson295189b2012-06-20 16:38:30 -070017807 @see
17808 @return Result of the function call
17809*/
17810WDI_Status
17811WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017812(
Jeff Johnson295189b2012-06-20 16:38:30 -070017813 WDI_ControlBlockType* pWDICtx,
17814 WDI_EventInfoType* pEventData
17815)
17816{
17817 WDI_Status wdiStatus;
17818 eHalStatus halStatus;
17819 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17821
17822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 -------------------------------------------------------------------------*/
17825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17826 ( NULL == pEventData->pEventData))
17827 {
17828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017832 }
17833
17834 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17835
17836 /*-------------------------------------------------------------------------
17837 Extract response and send it to UMAC
17838 -------------------------------------------------------------------------*/
17839 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017841
17842 if ( eHAL_STATUS_SUCCESS != halStatus )
17843 {
17844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17845 "Set STA Key failed with status %s (%d)",
17846 WDI_getHALStatusMsgString(halStatus),
17847 halStatus);
17848 /* send the status to UMAC, don't return from here*/
17849 }
17850
17851 /*Notify UMAC*/
17852 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17853
Jeff Johnsone7245742012-09-05 17:12:55 -070017854 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017855}/*WDI_ProcessSetSTAKeyRsp*/
17856
17857/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017858 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017859 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017860
17861 @param pWDICtx: pointer to the WLAN DAL context
17862 pEventData: pointer to the event information structure
17863
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 @see
17865 @return Result of the function call
17866*/
17867WDI_Status
17868WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017869(
Jeff Johnson295189b2012-06-20 16:38:30 -070017870 WDI_ControlBlockType* pWDICtx,
17871 WDI_EventInfoType* pEventData
17872)
17873{
17874 WDI_Status wdiStatus;
17875 eHalStatus halStatus;
17876 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17878
17879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017881 -------------------------------------------------------------------------*/
17882 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17883 ( NULL == pEventData->pEventData))
17884 {
17885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 }
17890
17891 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17892
17893 /*-------------------------------------------------------------------------
17894 Extract response and send it to UMAC
17895 -------------------------------------------------------------------------*/
17896 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017897 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017898
17899 if ( eHAL_STATUS_SUCCESS != halStatus )
17900 {
17901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17902 "Remove STA Key failed with status %s (%d)",
17903 WDI_getHALStatusMsgString(halStatus),
17904 halStatus);
17905 /* send the status to UMAC, don't return from here*/
17906 }
17907
17908 /*Notify UMAC*/
17909 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17910
Jeff Johnsone7245742012-09-05 17:12:55 -070017911 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017912}/*WDI_ProcessRemoveStaKeyRsp*/
17913
17914/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017916 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017917
17918 @param pWDICtx: pointer to the WLAN DAL context
17919 pEventData: pointer to the event information structure
17920
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 @see
17922 @return Result of the function call
17923*/
17924WDI_Status
17925WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017926(
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 WDI_ControlBlockType* pWDICtx,
17928 WDI_EventInfoType* pEventData
17929)
17930{
17931 WDI_Status wdiStatus;
17932 eHalStatus halStatus;
17933 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17935
17936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 -------------------------------------------------------------------------*/
17939 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17940 ( NULL == pEventData->pEventData))
17941 {
17942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017946 }
17947
17948 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17949
17950 /*-------------------------------------------------------------------------
17951 Extract response and send it to UMAC
17952 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017953 wpalMemoryCopy( &halStatus,
17954 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 sizeof(halStatus));
17956
Jeff Johnsone7245742012-09-05 17:12:55 -070017957 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017958
17959 if ( eHAL_STATUS_SUCCESS != halStatus )
17960 {
17961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17962 "Set STA Key failed with status %s (%d)",
17963 WDI_getHALStatusMsgString(halStatus),
17964 halStatus);
17965 /* send the status to UMAC, don't return from here*/
17966 }
17967
17968 /*Notify UMAC*/
17969 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17970
Jeff Johnsone7245742012-09-05 17:12:55 -070017971 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017972}/*WDI_ProcessSetSTABcastKeyRsp*/
17973
17974/**
17975 @brief Process Remove STA Bcast Key Rsp function (called when a
17976 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017977
17978 @param pWDICtx: pointer to the WLAN DAL context
17979 pEventData: pointer to the event information structure
17980
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 @see
17982 @return Result of the function call
17983*/
17984WDI_Status
17985WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017986(
Jeff Johnson295189b2012-06-20 16:38:30 -070017987 WDI_ControlBlockType* pWDICtx,
17988 WDI_EventInfoType* pEventData
17989)
17990{
17991 WDI_Status wdiStatus;
17992 eHalStatus halStatus;
17993 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17995
17996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017998 -------------------------------------------------------------------------*/
17999 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18000 ( NULL == pEventData->pEventData))
18001 {
18002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018003 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018004 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018006 }
18007
18008 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
18009
18010 /*-------------------------------------------------------------------------
18011 Extract response and send it to UMAC
18012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018013 wpalMemoryCopy( &halStatus,
18014 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 sizeof(halStatus));
18016
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018018
18019 if ( eHAL_STATUS_SUCCESS != halStatus )
18020 {
18021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18022 "Remove STA Key failed with status %s (%d)",
18023 WDI_getHALStatusMsgString(halStatus),
18024 halStatus);
18025 /* send the status to UMAC, don't return from here*/
18026 }
18027
18028 /*Notify UMAC*/
18029 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18030
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018032}/*WDI_ProcessRemoveStaBcastKeyRsp*/
18033
18034
18035/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018036 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070018037==========================================================================*/
18038
18039/**
18040 @brief Process Add TSpec Rsp function (called when a response
18041 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018042
18043 @param pWDICtx: pointer to the WLAN DAL context
18044 pEventData: pointer to the event information structure
18045
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 @see
18047 @return Result of the function call
18048*/
18049WDI_Status
18050WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018051(
Jeff Johnson295189b2012-06-20 16:38:30 -070018052 WDI_ControlBlockType* pWDICtx,
18053 WDI_EventInfoType* pEventData
18054)
18055{
18056 WDI_Status wdiStatus;
18057 eHalStatus halStatus;
18058 WDI_AddTsRspCb wdiAddTsRspCb;
18059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18060
18061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 -------------------------------------------------------------------------*/
18064 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18065 ( NULL == pEventData->pEventData))
18066 {
18067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018071 }
18072
18073 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18074
18075 /*-------------------------------------------------------------------------
18076 Extract response and send it to UMAC
18077 -------------------------------------------------------------------------*/
18078 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018079 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018080
18081 /*Notify UMAC*/
18082 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18083
Jeff Johnsone7245742012-09-05 17:12:55 -070018084 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018085}/*WDI_ProcessAddTSpecRsp*/
18086
18087
Sunil Duttbd736ed2014-05-26 21:19:41 +053018088
18089#ifdef WLAN_FEATURE_LINK_LAYER_STATS
18090
18091WDI_Status
18092WDI_ProcessLLStatsSetRsp
18093(
18094 WDI_ControlBlockType* pWDICtx,
18095 WDI_EventInfoType* pEventData
18096)
18097{
18098 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
18099
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018101 "%s: Enter ", __func__);
18102 /*-------------------------------------------------------------------------
18103 Sanity check
18104 -------------------------------------------------------------------------*/
18105 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18106 ( NULL == pEventData->pEventData))
18107 {
18108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18109 "%s: Invalid parameters", __func__);
18110 WDI_ASSERT(0);
18111 return WDI_STATUS_E_FAILURE;
18112 }
18113
18114 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
18115
18116 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18117
18118 return WDI_STATUS_SUCCESS;
18119}
18120
18121WDI_Status
18122WDI_ProcessLLStatsGetRsp
18123(
18124 WDI_ControlBlockType* pWDICtx,
18125 WDI_EventInfoType* pEventData
18126)
18127{
18128 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
18129
18130 /*-------------------------------------------------------------------------
18131 Sanity check
18132 -------------------------------------------------------------------------*/
18133 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18134 ( NULL == pEventData->pEventData))
18135 {
18136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18137 "%s: Invalid parameters", __func__);
18138 WDI_ASSERT(0);
18139 return WDI_STATUS_E_FAILURE;
18140 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018142 "%s: Enter ", __func__);
18143
18144 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
18145
18146 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18147
18148 return WDI_STATUS_SUCCESS;
18149}
18150
18151WDI_Status
18152WDI_ProcessLLStatsClearRsp
18153(
18154 WDI_ControlBlockType* pWDICtx,
18155 WDI_EventInfoType* pEventData
18156)
18157{
18158 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18159
18160 /*-------------------------------------------------------------------------
18161 Sanity check
18162 -------------------------------------------------------------------------*/
18163 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18164 ( NULL == pEventData->pEventData))
18165 {
18166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18167 "%s: Invalid parameters", __func__);
18168 WDI_ASSERT(0);
18169 return WDI_STATUS_E_FAILURE;
18170 }
18171
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018173 "%s: CLEAR RESPONSE CALL BACK", __func__);
18174 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18175
18176 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18177
18178 return WDI_STATUS_SUCCESS;
18179}
18180#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18181
Jeff Johnson295189b2012-06-20 16:38:30 -070018182/**
18183 @brief Process Del TSpec Rsp function (called when a response
18184 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018185
18186 @param pWDICtx: pointer to the WLAN DAL context
18187 pEventData: pointer to the event information structure
18188
Jeff Johnson295189b2012-06-20 16:38:30 -070018189 @see
18190 @return Result of the function call
18191*/
18192WDI_Status
18193WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018194(
Jeff Johnson295189b2012-06-20 16:38:30 -070018195 WDI_ControlBlockType* pWDICtx,
18196 WDI_EventInfoType* pEventData
18197)
18198{
18199 WDI_Status wdiStatus;
18200 eHalStatus halStatus;
18201 WDI_DelTsRspCb wdiDelTsRspCb;
18202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18203
18204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018205 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 -------------------------------------------------------------------------*/
18207 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18208 ( NULL == pEventData->pEventData))
18209 {
18210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 }
18215
18216 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18217
18218 /*-------------------------------------------------------------------------
18219 Extract response and send it to UMAC
18220 -------------------------------------------------------------------------*/
18221 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018222 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018223
18224 /*Notify UMAC*/
18225 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18226
Jeff Johnsone7245742012-09-05 17:12:55 -070018227 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018228}/*WDI_ProcessDelTSpecRsp*/
18229
18230/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018231 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018232 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018233
18234 @param pWDICtx: pointer to the WLAN DAL context
18235 pEventData: pointer to the event information structure
18236
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 @see
18238 @return Result of the function call
18239*/
18240WDI_Status
18241WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018242(
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 WDI_ControlBlockType* pWDICtx,
18244 WDI_EventInfoType* pEventData
18245)
18246{
18247 WDI_Status wdiStatus;
18248 eHalStatus halStatus;
18249 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18251
18252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018254 -------------------------------------------------------------------------*/
18255 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18256 ( NULL == pEventData->pEventData))
18257 {
18258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018259 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 }
18263
18264 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18265
18266 /*-------------------------------------------------------------------------
18267 Extract response and send it to UMAC
18268 -------------------------------------------------------------------------*/
18269 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018270 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018271
18272 /*Notify UMAC*/
18273 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18274
Jeff Johnsone7245742012-09-05 17:12:55 -070018275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018276}/*WDI_ProcessUpdateEDCAParamsRsp*/
18277
18278
18279/**
18280 @brief Process Add BA Rsp function (called when a response
18281 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018282
18283 @param pWDICtx: pointer to the WLAN DAL context
18284 pEventData: pointer to the event information structure
18285
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 @see
18287 @return Result of the function call
18288*/
18289WDI_Status
18290WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018291(
Jeff Johnson295189b2012-06-20 16:38:30 -070018292 WDI_ControlBlockType* pWDICtx,
18293 WDI_EventInfoType* pEventData
18294)
18295{
18296 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18297
18298 tAddBASessionRspParams halBASessionRsp;
18299 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18300
Jeff Johnsone7245742012-09-05 17:12:55 -070018301
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18303
18304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 -------------------------------------------------------------------------*/
18307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18308 ( NULL == pEventData->pEventData))
18309 {
18310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 }
18315
18316 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18317
18318 /*-------------------------------------------------------------------------
18319 Extract response and send it to UMAC
18320 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 wpalMemoryCopy( &halBASessionRsp,
18322 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018323 sizeof(halBASessionRsp));
18324
18325 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18326
Jeff Johnson43971f52012-07-17 12:26:56 -070018327 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018328 {
18329 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18330 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18331 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18332 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18333 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18334 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18335 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18336 }
18337
18338 /*Notify UMAC*/
18339 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18340
Jeff Johnsone7245742012-09-05 17:12:55 -070018341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018342}/*WDI_ProcessAddSessionBARsp*/
18343
18344
18345/**
18346 @brief Process Del BA Rsp function (called when a response
18347 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018348
18349 @param pWDICtx: pointer to the WLAN DAL context
18350 pEventData: pointer to the event information structure
18351
Jeff Johnson295189b2012-06-20 16:38:30 -070018352 @see
18353 @return Result of the function call
18354*/
18355WDI_Status
18356WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018357(
Jeff Johnson295189b2012-06-20 16:38:30 -070018358 WDI_ControlBlockType* pWDICtx,
18359 WDI_EventInfoType* pEventData
18360)
18361{
18362 WDI_Status wdiStatus;
18363 eHalStatus halStatus;
18364 WDI_DelBARspCb wdiDelBARspCb;
18365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18366
18367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018369 -------------------------------------------------------------------------*/
18370 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18371 ( NULL == pEventData->pEventData))
18372 {
18373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 }
18378
18379 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18380
18381 /*-------------------------------------------------------------------------
18382 Extract response and send it to UMAC
18383 -------------------------------------------------------------------------*/
18384 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018385 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018386
18387 if ( eHAL_STATUS_SUCCESS == halStatus )
18388 {
18389 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18390 }
18391
18392 /*Notify UMAC*/
18393 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18394
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018396}/*WDI_ProcessDelBARsp*/
18397
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018398#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018399/**
18400 @brief Process TSM Stats Rsp function (called when a response
18401 is being received over the bus from HAL)
18402
18403 @param pWDICtx: pointer to the WLAN DAL context
18404 pEventData: pointer to the event information structure
18405
18406 @see
18407 @return Result of the function call
18408*/
18409WDI_Status
18410WDI_ProcessTsmStatsRsp
18411(
18412 WDI_ControlBlockType* pWDICtx,
18413 WDI_EventInfoType* pEventData
18414)
18415{
18416 WDI_TsmRspCb wdiTsmStatsRspCb;
18417 tTsmStatsRspMsg halTsmStatsRspMsg;
18418 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18420
18421 /*-------------------------------------------------------------------------
18422 Sanity check
18423 -------------------------------------------------------------------------*/
18424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18425 ( NULL == pEventData->pEventData))
18426 {
18427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 WDI_ASSERT(0);
18430 return WDI_STATUS_E_FAILURE;
18431 }
18432
18433 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18434
18435 /*-------------------------------------------------------------------------
18436 Unpack HAL Response Message - the header was already extracted by the
18437 main Response Handling procedure
18438 -------------------------------------------------------------------------*/
18439 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18440 pEventData->pEventData,
18441 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18442
18443 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18444 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18445 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18446 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18447 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18448 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18449 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18450 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18451 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18452 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18453 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18454 halTsmStatsRspMsg.tsmStatsRspParams.status);
18455
18456 /*Notify UMAC*/
18457 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18458
18459 return WDI_STATUS_SUCCESS;
18460}/*WDI_ProcessTsmStatsRsp*/
18461
18462#endif
18463
18464
18465
18466/**
18467 @brief Process Flush AC Rsp function (called when a response
18468 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018469
18470 @param pWDICtx: pointer to the WLAN DAL context
18471 pEventData: pointer to the event information structure
18472
Jeff Johnson295189b2012-06-20 16:38:30 -070018473 @see
18474 @return Result of the function call
18475*/
18476WDI_Status
18477WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018478(
Jeff Johnson295189b2012-06-20 16:38:30 -070018479 WDI_ControlBlockType* pWDICtx,
18480 WDI_EventInfoType* pEventData
18481)
18482{
18483 WDI_Status wdiStatus;
18484 eHalStatus halStatus;
18485 WDI_FlushAcRspCb wdiFlushAcRspCb;
18486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18487
18488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018489 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 -------------------------------------------------------------------------*/
18491 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18492 ( NULL == pEventData->pEventData))
18493 {
18494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018495 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018498 }
18499
18500 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18501
18502 /*-------------------------------------------------------------------------
18503 Extract response and send it to UMAC
18504 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 wpalMemoryCopy( &halStatus,
18506 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018507 sizeof(halStatus));
18508
Jeff Johnsone7245742012-09-05 17:12:55 -070018509 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018510
18511 /*Notify UMAC*/
18512 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18513
Jeff Johnsone7245742012-09-05 17:12:55 -070018514 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018515}/*WDI_ProcessFlushAcRsp*/
18516
18517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018518 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018520
18521 @param pWDICtx: pointer to the WLAN DAL context
18522 pEventData: pointer to the event information structure
18523
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 @see
18525 @return Result of the function call
18526*/
18527WDI_Status
18528WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018529(
Jeff Johnson295189b2012-06-20 16:38:30 -070018530 WDI_ControlBlockType* pWDICtx,
18531 WDI_EventInfoType* pEventData
18532)
18533{
18534 WDI_Status wdiStatus;
18535 eHalStatus halStatus;
18536 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18538
18539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 -------------------------------------------------------------------------*/
18542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18543 ( NULL == pEventData->pEventData))
18544 {
18545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 }
18550
18551 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18552
18553 /*-------------------------------------------------------------------------
18554 Extract response and send it to UMAC
18555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018556 wpalMemoryCopy( &halStatus,
18557 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 sizeof(halStatus));
18559
Jeff Johnsone7245742012-09-05 17:12:55 -070018560 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018561
18562 /*Notify UMAC*/
18563 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18564
Jeff Johnsone7245742012-09-05 17:12:55 -070018565 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018566}/*WDI_ProcessBtAmpEventRsp*/
18567
18568
18569/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018570 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018572
18573 @param pWDICtx: pointer to the WLAN DAL context
18574 pEventData: pointer to the event information structure
18575
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 @see
18577 @return Result of the function call
18578*/
18579WDI_Status
18580WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018581(
Jeff Johnson295189b2012-06-20 16:38:30 -070018582 WDI_ControlBlockType* pWDICtx,
18583 WDI_EventInfoType* pEventData
18584)
18585{
18586 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18587 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18588 tAddStaSelfRspMsg halAddStaSelfRsp;
18589 WDI_AddStaParams wdiAddSTAParam = {0};
18590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18591
18592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018594 -------------------------------------------------------------------------*/
18595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18596 ( NULL == pEventData->pEventData))
18597 {
18598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 }
18603
Jeff Johnsone7245742012-09-05 17:12:55 -070018604 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18606
18607 /*-------------------------------------------------------------------------
18608 Extract response and send it to UMAC
18609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018610 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18611 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18613
18614
Jeff Johnsone7245742012-09-05 17:12:55 -070018615 wdiAddSTASelfParams.wdiStatus =
18616 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018617
Jeff Johnsone7245742012-09-05 17:12:55 -070018618 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018619 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018620 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018621 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018622 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018623 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18624
18625 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18626 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18627 WDI_MAC_ADDR_LEN);
18628
18629
18630#ifdef HAL_SELF_STA_PER_BSS
18631
18632 /* At this point add the self-STA */
18633
18634 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18635 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18636 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18637
18638 //all DPU indices are the same for self STA
18639
18640 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018641 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018642 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18643 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18644 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18645 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18646 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18647
18648 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18649 WDI_MAC_ADDR_LEN);
18650
18651 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18652 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18653
Jeff Johnsone7245742012-09-05 17:12:55 -070018654 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18656 {
18657 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18658 }
18659#endif
18660
18661 /*Notify UMAC*/
18662 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18663
Jeff Johnsone7245742012-09-05 17:12:55 -070018664 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018665}/*WDI_ProcessAddSTASelfRsp*/
18666
18667
18668
18669/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018670 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018672
18673 @param pWDICtx: pointer to the WLAN DAL context
18674 pEventData: pointer to the event information structure
18675
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 @see
18677 @return Result of the function call
18678*/
18679WDI_Status
18680WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018681(
Jeff Johnson295189b2012-06-20 16:38:30 -070018682 WDI_ControlBlockType* pWDICtx,
18683 WDI_EventInfoType* pEventData
18684)
18685{
18686 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18687 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18688 tDelStaSelfRspParams delStaSelfRspParams;
18689 wpt_uint8 ucStaIdx;
18690
18691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18692
18693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 -------------------------------------------------------------------------*/
18696 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18697 ( NULL == pEventData->pEventData))
18698 {
18699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018703 }
18704
18705 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18706
18707 /*-------------------------------------------------------------------------
18708 Extract response and send it to UMAC
18709 -------------------------------------------------------------------------*/
18710
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 (wpt_uint8*)pEventData->pEventData,
18713 sizeof(tDelStaSelfRspParams));
18714
Jeff Johnsone7245742012-09-05 17:12:55 -070018715 wdiDelStaSelfRspParams.wdiStatus =
18716 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018717
Jeff Johnsone7245742012-09-05 17:12:55 -070018718 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18720 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18721 {
18722 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018723 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 delStaSelfRspParams.selfMacAddr,
18725 &ucStaIdx);
18726 if(WDI_STATUS_E_FAILURE == wdiStatus)
18727 {
18728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018729 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 }
18733 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18734 }
18735
18736 /*Notify UMAC*/
18737 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18738
18739 return WDI_STATUS_SUCCESS;
18740}
18741
Jeff Johnsone7245742012-09-05 17:12:55 -070018742#ifdef FEATURE_OEM_DATA_SUPPORT
18743/**
18744 @brief Start Oem Data Rsp function (called when a
18745 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018746
Jeff Johnsone7245742012-09-05 17:12:55 -070018747 @param pWDICtx: pointer to the WLAN DAL context
18748 pEventData: pointer to the event information structure
18749
18750 @see
18751 @return Result of the function call
18752*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018753
18754WDI_Status
18755WDI_ProcessStartOemDataRsp
18756(
18757 WDI_ControlBlockType* pWDICtx,
18758 WDI_EventInfoType* pEventData
18759)
18760{
18761 WDI_oemDataRspCb wdiOemDataRspCb;
18762 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18763 tStartOemDataRspParams* halStartOemDataRspParams;
18764
18765 /*-------------------------------------------------------------------------
18766 Sanity check
18767 -------------------------------------------------------------------------*/
18768 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18769 ( NULL == pEventData->pEventData))
18770 {
18771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018772 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018773 WDI_ASSERT(0);
18774 return WDI_STATUS_E_FAILURE;
18775 }
18776
18777 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18778
18779 /*-------------------------------------------------------------------------
18780 Extract response and send it to UMAC
18781 -------------------------------------------------------------------------*/
18782 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18783
18784
18785 //It is the responsibility of the application code to check for failure
18786 //conditions!
18787
18788 //Allocate memory for WDI OEM DATA RSP structure
18789 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18790
18791 if(NULL == wdiOemDataRspParams)
18792 {
18793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018794 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018795 pWDICtx, pEventData, pEventData->pEventData);
18796 WDI_ASSERT(0);
18797 return WDI_STATUS_E_FAILURE;
18798 }
18799
Padma, Santhosh Kumarabe6c432016-10-24 18:13:11 +053018800 wpalMemoryZero(wdiOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18801
Jeff Johnsone7245742012-09-05 17:12:55 -070018802 /* Populate WDI structure members */
Padma, Santhosh Kumarabe6c432016-10-24 18:13:11 +053018803 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp,
18804 halStartOemDataRspParams->oemDataRsp,
18805 pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070018806
18807 /*Notify UMAC*/
18808 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18809
18810 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18811 wpalMemoryFree(wdiOemDataRspParams);
18812
18813 return WDI_STATUS_SUCCESS;
18814}/*WDI_PrcoessStartOemDataRsp*/
18815#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018816
18817/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018818 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018819===========================================================================*/
18820
18821/**
18822 @brief Process Channel Switch Rsp function (called when a response
18823 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018824
18825 @param pWDICtx: pointer to the WLAN DAL context
18826 pEventData: pointer to the event information structure
18827
Jeff Johnson295189b2012-06-20 16:38:30 -070018828 @see
18829 @return Result of the function call
18830*/
18831WDI_Status
18832WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018833(
Jeff Johnson295189b2012-06-20 16:38:30 -070018834 WDI_ControlBlockType* pWDICtx,
18835 WDI_EventInfoType* pEventData
18836)
18837{
18838 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18839 WDI_SwitchChRspCb wdiChSwitchRspCb;
18840 tSwitchChannelRspParams halSwitchChannelRsp;
18841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18842
18843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 -------------------------------------------------------------------------*/
18846 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18847 ( NULL == pEventData->pEventData))
18848 {
18849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018853 }
18854
18855 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18856
18857 /*-------------------------------------------------------------------------
18858 Extract response and send it to UMAC
18859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018860 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 (wpt_uint8*)pEventData->pEventData,
18862 sizeof(halSwitchChannelRsp));
18863
Jeff Johnsone7245742012-09-05 17:12:55 -070018864 wdiSwitchChRsp.wdiStatus =
18865 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018866 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18867
18868#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018870#endif
18871
18872 /*Notify UMAC*/
18873 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18874
Jeff Johnsone7245742012-09-05 17:12:55 -070018875 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018876}/*WDI_ProcessChannelSwitchRsp*/
18877
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018878/**
18879 @brief Process Channel Switch Rsp function (called when a response
18880 is being received over the bus from HAL against
18881 WDI_ProcessChannelSwitchReq_V1)
18882
18883 @param pWDICtx: pointer to the WLAN DAL context
18884 pEventData: pointer to the event information structure
18885
18886 @see
18887 @return Result of the function call
18888*/
18889
18890WDI_Status
18891WDI_ProcessChannelSwitchRsp_V1
18892(
18893 WDI_ControlBlockType* pWDICtx,
18894 WDI_EventInfoType* pEventData
18895)
18896{
18897 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18898 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18899 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18901
18902 /*-------------------------------------------------------------------------
18903 Sanity check
18904 -------------------------------------------------------------------------*/
18905 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18906 ( NULL == pEventData->pEventData))
18907 {
18908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18909 "%s: Invalid parameters", __func__);
18910 WDI_ASSERT(0);
18911 return WDI_STATUS_E_FAILURE;
18912 }
18913
18914 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18915
18916 /*-------------------------------------------------------------------------
18917 Extract response and send it to UMAC
18918 -------------------------------------------------------------------------*/
18919 wpalMemoryCopy( &halSwitchChannelRsp,
18920 (wpt_uint8*)pEventData->pEventData,
18921 sizeof(halSwitchChannelRsp));
18922
18923 wdiSwitchChRsp.wdiStatus =
18924 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18925 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18926
18927#ifdef WLAN_FEATURE_VOWIFI
18928 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18929#endif
18930
18931 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18932 if (( NULL == wdiChSwitchRspCb ) )
18933 {
18934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18935 "%s: ### Call back function is null", __func__);
18936 WDI_ASSERT(0);
18937 return WDI_STATUS_E_FAILURE;
18938 }
18939 /*Notify UMAC*/
18940 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18941
18942 return WDI_STATUS_SUCCESS;
18943}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018944
18945/**
18946 @brief Process Config STA Rsp function (called when a response
18947 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018948
18949 @param pWDICtx: pointer to the WLAN DAL context
18950 pEventData: pointer to the event information structure
18951
Jeff Johnson295189b2012-06-20 16:38:30 -070018952 @see
18953 @return Result of the function call
18954*/
18955WDI_Status
18956WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018957(
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 WDI_ControlBlockType* pWDICtx,
18959 WDI_EventInfoType* pEventData
18960)
18961{
18962 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18963 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18964 WDI_AddStaParams wdiAddSTAParam;
18965
18966 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018968
Jeff Johnsone7245742012-09-05 17:12:55 -070018969 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18971
18972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018974 -------------------------------------------------------------------------*/
18975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18976 ( NULL == pEventData->pEventData))
18977 {
18978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 }
18983
18984 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18985
18986 /*-------------------------------------------------------------------------
18987 Extract response and send it to UMAC
18988 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18990 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 sizeof(halConfigStaRsp.configStaRspParams));
18992
18993
18994 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18995 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18996 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18997 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18998 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18999
19000 /* MAC Address of STA - take from cache as it does not come back in the
19001 response*/
19002 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019004 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019005
19006 wdiCfgSTAParams.wdiStatus =
19007 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019008
19009 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
19010 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
19011 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
19012
19013 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
19014 {
19015 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
19016 {
19017 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
19020 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019021
Jeff Johnson295189b2012-06-20 16:38:30 -070019022 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019023 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070019025 wdiAddSTAParam.ucHTCapable =
19026 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
19027 wdiAddSTAParam.ucStaType =
19028 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070019029 wdiAddSTAParam.ucRmfEnabled =
19030 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070019031
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070019033 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
19034 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019035 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019036
19037 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
19038 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
19039 WDI_MAC_ADDR_LEN);
19040
19041 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19042 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
19043 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070019044
19045 if ( NULL == pBSSSes )
19046 {
19047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19048 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070019049
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 }
19053
19054 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019055 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019057 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019058 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019059 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019061 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019062 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019064
Jeff Johnson295189b2012-06-20 16:38:30 -070019065 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
19066 }
19067 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
19068 {
19069 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
19070
Jeff Johnsone7245742012-09-05 17:12:55 -070019071 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019075 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019076 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019077 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 halConfigStaRsp.configStaRspParams.ucUcastSig;
19085 }
19086 }
19087
19088 /*Notify UMAC*/
19089 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
19090
Jeff Johnsone7245742012-09-05 17:12:55 -070019091 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019092}/*WDI_ProcessConfigStaRsp*/
19093
19094
19095/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019096 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019098
19099 @param pWDICtx: pointer to the WLAN DAL context
19100 pEventData: pointer to the event information structure
19101
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 @see
19103 @return Result of the function call
19104*/
19105WDI_Status
19106WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019107(
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 WDI_ControlBlockType* pWDICtx,
19109 WDI_EventInfoType* pEventData
19110)
19111{
19112 WDI_Status wdiStatus;
19113 eHalStatus halStatus;
19114 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
19115
19116 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019117 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19119
19120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 -------------------------------------------------------------------------*/
19123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19124 ( NULL == pEventData->pEventData))
19125 {
19126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 }
19131
19132 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
19133
19134 wpalMutexAcquire(&pWDICtx->wptMutex);
19135
19136 /*If the link is being transitioned to idle - the BSS is to be deleted
19137 - this type of ending a session is possible when UMAC has failed an
19138 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19141 {
19142 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019143 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070019144 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019145 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19146 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
19147 &pBSSSes);
19148
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 /*-----------------------------------------------------------------------
19150 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070019151 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070019152 -----------------------------------------------------------------------*/
19153 if ( NULL == pBSSSes )
19154 {
19155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19156 "Set link response received outside association session");
19157 }
19158 else
19159 {
19160 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19161 will be del BSS coming after this to stop the beaconing & cleaning up the
19162 sessions*/
19163 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19164 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19165 {
19166 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019167 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 -----------------------------------------------------------------------*/
19169 WDI_DeleteSession(pWDICtx, pBSSSes);
19170
19171 /*-----------------------------------------------------------------------
19172 Check to see if this association is in progress - if so disable the
19173 flag as this has ended
19174 -----------------------------------------------------------------------*/
19175 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019176 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019177 /*Association no longer in progress */
19178 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19179 /*Association no longer in progress - prepare pending assoc for processing*/
19180 WDI_DequeueAssocRequest(pWDICtx);
19181 }
19182 }
19183 }
19184 }
19185 /* If the link state has been set to POST ASSOC, reset the "association in
19186 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019188 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19189 {
19190 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19191 WDI_DequeueAssocRequest(pWDICtx);
19192 }
19193
19194 wpalMutexRelease(&pWDICtx->wptMutex);
19195
19196 /*-------------------------------------------------------------------------
19197 Extract response and send it to UMAC
19198 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019199 wpalMemoryCopy( &halStatus,
19200 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019201 sizeof(halStatus));
19202
Jeff Johnsone7245742012-09-05 17:12:55 -070019203 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019204
19205 /*Notify UMAC*/
19206 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19207
Jeff Johnsone7245742012-09-05 17:12:55 -070019208 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019209}/*WDI_ProcessSetLinkStateRsp*/
19210
19211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019212 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019214
19215 @param pWDICtx: pointer to the WLAN DAL context
19216 pEventData: pointer to the event information structure
19217
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 @see
19219 @return Result of the function call
19220*/
19221WDI_Status
19222WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019223(
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 WDI_ControlBlockType* pWDICtx,
19225 WDI_EventInfoType* pEventData
19226)
19227{
19228 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19229 WDI_GetStatsRspCb wdiGetStatsRspCb;
19230 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019231
Jeff Johnson295189b2012-06-20 16:38:30 -070019232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19233
19234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 -------------------------------------------------------------------------*/
19237 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19238 ( NULL == pEventData->pEventData))
19239 {
19240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019244 }
19245
19246 /*-------------------------------------------------------------------------
19247 Extract response and send it to UMAC
19248 -------------------------------------------------------------------------*/
19249 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19250
19251 /*allocate the stats response buffer */
19252 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19253 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19254 + sizeof(WDI_GetStatsRspParamsType));
19255
19256 if(NULL == wdiGetStatsRsp)
19257 {
19258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019259 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 pWDICtx, pEventData, pEventData->pEventData);
19261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019263 }
19264
19265 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19266
19267 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19268 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19269 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19270 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19271 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19272 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19273
19274 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19275 wpalMemoryCopy(wdiGetStatsRsp + 1,
19276 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19277 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19278
19279 /*Notify UMAC*/
19280 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19281
19282 wpalMemoryFree(wdiGetStatsRsp);
19283
Jeff Johnsone7245742012-09-05 17:12:55 -070019284 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019285}/*WDI_ProcessGetStatsRsp*/
19286
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019287#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019288/**
19289 @brief Process Get Roam Rssi Rsp function (called when a response is
19290 being received over the bus from HAL)
19291
19292 @param pWDICtx: pointer to the WLAN DAL context
19293 pEventData: pointer to the event information structure
19294
19295 @see
19296 @return Result of the function call
19297*/
19298WDI_Status
19299WDI_ProcessGetRoamRssiRsp
19300(
19301 WDI_ControlBlockType* pWDICtx,
19302 WDI_EventInfoType* pEventData
19303)
19304{
19305 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19306 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19307 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19309
19310 /*-------------------------------------------------------------------------
19311 Sanity check
19312 -------------------------------------------------------------------------*/
19313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19314 ( NULL == pEventData->pEventData))
19315 {
19316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19317 "%s: Invalid parameters", __func__);
19318 WDI_ASSERT(0);
19319 return WDI_STATUS_E_FAILURE;
19320 }
19321
19322 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19323 if(NULL == wdiGetRoamRssiRspCb)
19324 {
19325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19326 "%s: call back function is NULL", __func__);
19327 WDI_ASSERT(0);
19328 return WDI_STATUS_E_FAILURE;
19329 }
19330
19331 /*-------------------------------------------------------------------------
19332 Extract response and send it to UMAC
19333 -------------------------------------------------------------------------*/
19334 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19335 pEventData->pEventData,
19336 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19337
19338 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19339 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19340 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19341
19342 /*Notify UMAC*/
19343 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19344
19345 return WDI_STATUS_SUCCESS;
19346}/*WDI_ProcessGetRoamRssiRsp*/
19347#endif
19348
Jeff Johnson295189b2012-06-20 16:38:30 -070019349
19350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019351 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019353
19354 @param pWDICtx: pointer to the WLAN DAL context
19355 pEventData: pointer to the event information structure
19356
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 @see
19358 @return Result of the function call
19359*/
19360WDI_Status
19361WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019362(
Jeff Johnson295189b2012-06-20 16:38:30 -070019363 WDI_ControlBlockType* pWDICtx,
19364 WDI_EventInfoType* pEventData
19365)
19366{
19367 WDI_Status wdiStatus;
19368 eHalStatus halStatus;
19369 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19371
19372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 -------------------------------------------------------------------------*/
19375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19376 ( NULL == pEventData->pEventData))
19377 {
19378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 }
19383
19384 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19385
19386 /*-------------------------------------------------------------------------
19387 Extract response and send it to UMAC
19388 -------------------------------------------------------------------------*/
19389 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019390 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019391
19392 /*Notify UMAC*/
19393 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19394
Jeff Johnsone7245742012-09-05 17:12:55 -070019395 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019396}/*WDI_ProcessUpdateCfgRsp*/
19397
19398
19399
19400/**
19401 @brief Process Add BA Rsp function (called when a response
19402 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019403
19404 @param pWDICtx: pointer to the WLAN DAL context
19405 pEventData: pointer to the event information structure
19406
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 @see
19408 @return Result of the function call
19409*/
19410WDI_Status
19411WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019412(
Jeff Johnson295189b2012-06-20 16:38:30 -070019413 WDI_ControlBlockType* pWDICtx,
19414 WDI_EventInfoType* pEventData
19415)
19416{
19417 WDI_AddBARspCb wdiAddBARspCb;
19418
19419 tAddBARspParams halAddBARsp;
19420 WDI_AddBARspinfoType wdiAddBARsp;
19421
19422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19423
19424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 -------------------------------------------------------------------------*/
19427 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19428 ( NULL == pEventData->pEventData))
19429 {
19430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019434 }
19435
19436 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19437
19438 /*-------------------------------------------------------------------------
19439 Extract response and send it to UMAC
19440 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019441 wpalMemoryCopy( &halAddBARsp,
19442 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 sizeof(halAddBARsp));
19444
19445 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19446
Jeff Johnson43971f52012-07-17 12:26:56 -070019447 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 {
19449 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19450 }
19451
19452 /*Notify UMAC*/
19453 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19454
Jeff Johnsone7245742012-09-05 17:12:55 -070019455 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019456}/*WDI_ProcessAddSessionBARsp*/
19457
19458/**
19459 @brief Process Add BA Rsp function (called when a response
19460 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019461
19462 @param pWDICtx: pointer to the WLAN DAL context
19463 pEventData: pointer to the event information structure
19464
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 @see
19466 @return Result of the function call
19467*/
19468WDI_Status
19469WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019470(
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 WDI_ControlBlockType* pWDICtx,
19472 WDI_EventInfoType* pEventData
19473)
19474{
19475 WDI_TriggerBARspCb wdiTriggerBARspCb;
19476
19477 tTriggerBARspParams* halTriggerBARsp;
19478 tTriggerBaRspCandidate* halBaCandidate;
19479 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19480 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19481 wpt_uint16 index;
19482 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019483 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19485
19486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 -------------------------------------------------------------------------*/
19489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19490 ( NULL == pEventData->pEventData))
19491 {
19492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019496 }
19497
19498 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19499
19500 /*-------------------------------------------------------------------------
19501 Extract response and send it to UMAC
19502 -------------------------------------------------------------------------*/
19503 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19504
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019505 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19506
19507 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19508 {
19509 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019510 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019511 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019512
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019513 if(NULL == wdiTriggerBARsp)
19514 {
19515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019516 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019517 pWDICtx, pEventData, pEventData->pEventData);
19518 WDI_ASSERT(0);
19519 return WDI_STATUS_E_FAILURE;
19520 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019521
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019522 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19523
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019525 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019526 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19527
19528 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19529 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19530
19531 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19532 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19535 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19536 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019537 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019538 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019539 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019540 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19541 }
19542 wdiTriggerBARspCandidate++;
19543 halBaCandidate++;
19544 }
19545 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019546 else
19547 {
19548 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19549
19550 if(NULL == wdiTriggerBARsp)
19551 {
19552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019553 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019554 pWDICtx, pEventData, pEventData->pEventData);
19555 WDI_ASSERT(0);
19556 return WDI_STATUS_E_FAILURE;
19557 }
19558
19559 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19560
19561 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019562
19563 /*Notify UMAC*/
19564 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19565
19566 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019568}/*WDI_ProcessAddSessionBARsp*/
19569
19570/**
19571 @brief Process Update Beacon Params Rsp function (called when a response
19572 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019573
19574 @param pWDICtx: pointer to the WLAN DAL context
19575 pEventData: pointer to the event information structure
19576
Jeff Johnson295189b2012-06-20 16:38:30 -070019577 @see
19578 @return Result of the function call
19579*/
19580WDI_Status
19581WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019582(
Jeff Johnson295189b2012-06-20 16:38:30 -070019583 WDI_ControlBlockType* pWDICtx,
19584 WDI_EventInfoType* pEventData
19585)
19586{
19587 WDI_Status wdiStatus;
19588 eHalStatus halStatus;
19589 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19591
19592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 -------------------------------------------------------------------------*/
19595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19596 ( NULL == pEventData->pEventData))
19597 {
19598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019602 }
19603
19604 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19605
19606 /*-------------------------------------------------------------------------
19607 Extract response and send it to UMAC
19608 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019609 wpalMemoryCopy( &halStatus,
19610 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 sizeof(halStatus));
19612
Jeff Johnsone7245742012-09-05 17:12:55 -070019613 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019614
19615 /*Notify UMAC*/
19616 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19617
Jeff Johnsone7245742012-09-05 17:12:55 -070019618 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019619}/*WDI_ProcessUpdateBeaconParamsRsp*/
19620
19621/**
19622 @brief Process Send Beacon template Rsp function (called when a response
19623 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019624
19625 @param pWDICtx: pointer to the WLAN DAL context
19626 pEventData: pointer to the event information structure
19627
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 @see
19629 @return Result of the function call
19630*/
19631WDI_Status
19632WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019633(
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 WDI_ControlBlockType* pWDICtx,
19635 WDI_EventInfoType* pEventData
19636)
19637{
19638 WDI_Status wdiStatus;
19639 eHalStatus halStatus;
19640 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19642
19643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019645 -------------------------------------------------------------------------*/
19646 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19647 ( NULL == pEventData->pEventData))
19648 {
19649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 }
19654
19655 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19656
19657 /*-------------------------------------------------------------------------
19658 Extract response and send it to UMAC
19659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019660 wpalMemoryCopy( &halStatus,
19661 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019662 sizeof(halStatus));
19663
Jeff Johnsone7245742012-09-05 17:12:55 -070019664 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019665
19666 /*Notify UMAC*/
19667 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19668
Jeff Johnsone7245742012-09-05 17:12:55 -070019669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019670}/*WDI_ProcessSendBeaconParamsRsp*/
19671
Jeff Johnsone7245742012-09-05 17:12:55 -070019672
Jeff Johnson295189b2012-06-20 16:38:30 -070019673/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019674 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019676
19677 @param pWDICtx: pointer to the WLAN DAL context
19678 pEventData: pointer to the event information structure
19679
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 @see
19681 @return Result of the function call
19682*/
19683WDI_Status
19684WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019685(
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 WDI_ControlBlockType* pWDICtx,
19687 WDI_EventInfoType* pEventData
19688)
19689{
19690 WDI_Status wdiStatus;
19691 eHalStatus halStatus;
19692 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19694
19695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 -------------------------------------------------------------------------*/
19698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19699 ( NULL == pEventData->pEventData))
19700 {
19701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019705 }
19706
19707 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19708
19709 /*-------------------------------------------------------------------------
19710 Extract response and send it to UMAC
19711 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019712 wpalMemoryCopy( &halStatus,
19713 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019714 sizeof(halStatus));
19715
Jeff Johnsone7245742012-09-05 17:12:55 -070019716 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019717
19718 /*Notify UMAC*/
19719 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19720
Jeff Johnsone7245742012-09-05 17:12:55 -070019721 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019722}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19723
19724 /**
19725 @brief Process Set Max Tx Power Rsp function (called when a response
19726 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019727
19728 @param pWDICtx: pointer to the WLAN DAL context
19729 pEventData: pointer to the event information structure
19730
Jeff Johnson295189b2012-06-20 16:38:30 -070019731 @see
19732 @return Result of the function call
19733*/
19734WDI_Status
19735WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019736(
Jeff Johnson295189b2012-06-20 16:38:30 -070019737 WDI_ControlBlockType* pWDICtx,
19738 WDI_EventInfoType* pEventData
19739)
19740{
19741 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019742
Jeff Johnson295189b2012-06-20 16:38:30 -070019743 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019744
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19747
19748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019750 -------------------------------------------------------------------------*/
19751 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19752 ( NULL == pEventData->pEventData))
19753 {
19754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019758 }
19759
19760 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19761
19762 /*-------------------------------------------------------------------------
19763 Extract response and send it to UMAC
19764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019765 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19766 pEventData->pEventData,
19767 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019768
19769 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19770 {
19771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19772 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019773 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019774 }
19775
Jeff Johnsone7245742012-09-05 17:12:55 -070019776 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019777 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019778 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019779
19780 /*Notify UMAC*/
19781 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19782
Jeff Johnsone7245742012-09-05 17:12:55 -070019783 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019784}
19785
schang86c22c42013-03-13 18:41:24 -070019786 /**
19787 @brief Process Set Tx Power Rsp function (called when a response
19788 is being received over the bus from HAL)
19789
19790 @param pWDICtx: pointer to the WLAN DAL context
19791 pEventData: pointer to the event information structure
19792
19793 @see
19794 @return Result of the function call
19795*/
19796WDI_Status
19797WDI_ProcessSetTxPowerRsp
19798(
19799 WDI_ControlBlockType* pWDICtx,
19800 WDI_EventInfoType* pEventData
19801)
19802{
19803 tSetTxPwrRspMsg halTxpowerrsp;
19804 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19805 WDA_SetTxPowerRspCb wdiReqStatusCb;
19806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19807
19808 /*-------------------------------------------------------------------------
19809 Sanity check
19810 -------------------------------------------------------------------------*/
19811 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19812 ( NULL == pEventData->pEventData))
19813 {
19814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19815 "%s: Invalid parameters", __func__);
19816 WDI_ASSERT(0);
19817 return WDI_STATUS_E_FAILURE;
19818 }
19819
19820 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19821
19822 /*-------------------------------------------------------------------------
19823 Extract response and send it to UMAC
19824 -------------------------------------------------------------------------*/
19825 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19826 pEventData->pEventData,
19827 sizeof(halTxpowerrsp.setTxPwrRspParams));
19828
19829 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19830 {
19831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19832 "Error status returned in Set Tx Power Response ");
19833 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19834 return WDI_STATUS_E_FAILURE;
19835 }
19836
19837 wdiSetTxPowerRspMsg.wdiStatus =
19838 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19839
19840 /*Notify UMAC*/
19841 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19842
19843 return WDI_STATUS_SUCCESS;
19844}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019845
19846/**
19847 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19848 is being received over the bus from HAL)
19849
19850 @param pWDICtx: pointer to the WLAN DAL context
19851 pEventData: pointer to the event information structure
19852
19853 @see
19854 @return Result of the function call
19855*/
19856WDI_Status
19857WDI_ProcessSetMaxTxPowerPerBandRsp
19858(
19859 WDI_ControlBlockType* pWDICtx,
19860 WDI_EventInfoType* pEventData
19861)
19862{
19863 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19864 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19865 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19867
19868 /*-------------------------------------------------------------------------
19869 Sanity check
19870 -------------------------------------------------------------------------*/
19871 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19872 ( NULL == pEventData->pEventData))
19873 {
19874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19875 "%s: Invalid parameters", __func__);
19876 WDI_ASSERT(0);
19877 return WDI_STATUS_E_FAILURE;
19878 }
19879
19880 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19881
19882 /*-------------------------------------------------------------------------
19883 Extract response and send it to UMAC
19884 -------------------------------------------------------------------------*/
19885 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19886 pEventData->pEventData,
19887 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19888
19889 if (eHAL_STATUS_SUCCESS !=
19890 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19891 {
19892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19893 "Error status returned in Set Max Tx Power Per Band Response");
19894 return WDI_STATUS_E_FAILURE;
19895 }
19896
19897 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19898 WDI_HAL_2_WDI_STATUS(
19899 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19900
19901 /* Notify UMAC */
19902 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19903
19904 return WDI_STATUS_SUCCESS;
19905}
19906
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019907#ifdef FEATURE_WLAN_TDLS
19908/**
19909 @brief Process TDLS Link Establish Rsp function (called
19910 when a response is being received over the bus from HAL)
19911
19912 @param pWDICtx: pointer to the WLAN DAL context
19913 pEventData: pointer to the event information structure
19914
19915 @see
19916 @return Result of the function call
19917*/
19918WDI_Status
19919WDI_ProcessLinkEstablishReqRsp
19920(
19921 WDI_ControlBlockType* pWDICtx,
19922 WDI_EventInfoType* pEventData
19923)
19924{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019925 eHalStatus halStatus;
19926 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019927 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19928 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19929
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19931
19932 /*-------------------------------------------------------------------------
19933 Sanity check
19934 -------------------------------------------------------------------------*/
19935 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19936 ( NULL == pEventData->pEventData))
19937 {
19938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19939 "%s: Invalid parameters", __func__);
19940 WDI_ASSERT(0);
19941 return WDI_STATUS_E_FAILURE;
19942 }
19943
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019944 /*-------------------------------------------------------------------------
19945 Extract indication and send it to UMAC
19946 -------------------------------------------------------------------------*/
19947 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19948 pEventData->pEventData,
19949 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19950
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019951 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19952
19953 /*-------------------------------------------------------------------------
19954 Extract response and send it to UMAC
19955 -------------------------------------------------------------------------*/
19956 wpalMemoryCopy( &halStatus,
19957 pEventData->pEventData,
19958 sizeof(halStatus));
19959
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019960 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19961 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019962
19963 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019964 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019965
19966 return WDI_STATUS_SUCCESS;
19967}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019968
19969
19970
19971/**
19972 @brief Process TDLS Chan switch Rsp function (called
19973 when a response is being received over the bus from HAL)
19974
19975 @param pWDICtx: pointer to the WLAN DAL context
19976 pEventData: pointer to the event information structure
19977
19978 @see
19979 @return Result of the function call
19980*/
19981WDI_Status
19982WDI_ProcessChanSwitchReqRsp
19983(
19984 WDI_ControlBlockType* pWDICtx,
19985 WDI_EventInfoType* pEventData
19986)
19987{
19988 eHalStatus halStatus;
19989 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19990 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19991 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19992
19993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19994
19995 /*-------------------------------------------------------------------------
19996 Sanity check
19997 -------------------------------------------------------------------------*/
19998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19999 ( NULL == pEventData->pEventData))
20000 {
20001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20002 "%s: Invalid parameters", __func__);
20003 WDI_ASSERT(0);
20004 return WDI_STATUS_E_FAILURE;
20005 }
20006
20007 /*-------------------------------------------------------------------------
20008 Extract indication and send it to UMAC
20009 -------------------------------------------------------------------------*/
20010 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
20011 pEventData->pEventData,
20012 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
20013
20014 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
20015
20016 /*-------------------------------------------------------------------------
20017 Extract response and send it to UMAC
20018 -------------------------------------------------------------------------*/
20019 wpalMemoryCopy( &halStatus,
20020 pEventData->pEventData,
20021 sizeof(halStatus));
20022
20023 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20024 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
20025
20026 /*Notify UMAC*/
20027 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
20028
20029 return WDI_STATUS_SUCCESS;
20030}/*WDI_ProcessChanSwitchReqRsp*/
20031
20032
20033
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020034#endif
schang86c22c42013-03-13 18:41:24 -070020035
Jeff Johnson295189b2012-06-20 16:38:30 -070020036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020037 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020039
20040 @param pWDICtx: pointer to the WLAN DAL context
20041 pEventData: pointer to the event information structure
20042
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 @see
20044 @return Result of the function call
20045*/
20046WDI_Status
20047WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020048(
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 WDI_ControlBlockType* pWDICtx,
20050 WDI_EventInfoType* pEventData
20051)
20052{
20053 WDI_Status wdiStatus;
20054 eHalStatus halStatus;
20055 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
20056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20057
20058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 -------------------------------------------------------------------------*/
20061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20062 ( NULL == pEventData->pEventData))
20063 {
20064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020068 }
20069
20070 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
20071
20072 /*-------------------------------------------------------------------------
20073 Extract response and send it to UMAC
20074 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020075 wpalMemoryCopy( &halStatus,
20076 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 sizeof(halStatus));
20078
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020080
20081 /*Notify UMAC*/
20082 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20083
Jeff Johnsone7245742012-09-05 17:12:55 -070020084 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020085}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020086/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020089
20090 @param pWDICtx: pointer to the WLAN DAL context
20091 pEventData: pointer to the event information structure
20092
Jeff Johnson295189b2012-06-20 16:38:30 -070020093 @see
20094 @return Result of the function call
20095*/
20096WDI_Status
20097WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020098(
Jeff Johnson295189b2012-06-20 16:38:30 -070020099 WDI_ControlBlockType* pWDICtx,
20100 WDI_EventInfoType* pEventData
20101)
20102{
20103 WDI_Status wdiStatus;
20104 eHalStatus halStatus;
20105 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020106 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20108
20109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 -------------------------------------------------------------------------*/
20112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20113 ( NULL == pEventData->pEventData))
20114 {
20115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 }
20120
20121 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
20122
20123 /*-------------------------------------------------------------------------
20124 Extract response and send it to UMAC
20125 -------------------------------------------------------------------------*/
20126 halStatus = *((eHalStatus*)pEventData->pEventData);
20127
Jeff Johnsone7245742012-09-05 17:12:55 -070020128 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020129
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020130 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
20131 * Other module states are taken care by PMC.
20132 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
20133 */
20134 if (wdiStatus != WDI_STATUS_SUCCESS) {
20135
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20137 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
20138 halStatus);
20139 /* Call Back is not required as we are putting the DXE in FULL
20140 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020141 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20142
20143 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
20144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020145 "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 -080020146 WDI_ASSERT(0);
20147 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020148 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020149 /*Notify UMAC*/
20150 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20151
Jeff Johnsone7245742012-09-05 17:12:55 -070020152 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020153}/*WDI_ProcessEnterImpsRsp*/
20154
20155/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020156 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020157 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020158
20159 @param pWDICtx: pointer to the WLAN DAL context
20160 pEventData: pointer to the event information structure
20161
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 @see
20163 @return Result of the function call
20164*/
20165WDI_Status
20166WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020167(
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 WDI_ControlBlockType* pWDICtx,
20169 WDI_EventInfoType* pEventData
20170)
20171{
20172 WDI_Status wdiStatus;
20173 eHalStatus halStatus;
20174 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020175 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20177
20178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020180 -------------------------------------------------------------------------*/
20181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20182 ( NULL == pEventData->pEventData))
20183 {
20184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020188 }
20189
20190 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20191
20192 /*-------------------------------------------------------------------------
20193 Extract response and send it to UMAC
20194 -------------------------------------------------------------------------*/
20195 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020196 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020197
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020198 if (halStatus != eHAL_STATUS_SUCCESS)
20199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20200 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20201
Jeff Johnson295189b2012-06-20 16:38:30 -070020202 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020203 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20204 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20205 {
20206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020207 "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 -080020208 WDI_ASSERT(0);
20209 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 /*Notify UMAC*/
20211 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20212
Jeff Johnsone7245742012-09-05 17:12:55 -070020213 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020214}/*WDI_ProcessExitImpsRsp*/
20215
20216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020217 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020219
20220 @param pWDICtx: pointer to the WLAN DAL context
20221 pEventData: pointer to the event information structure
20222
Jeff Johnson295189b2012-06-20 16:38:30 -070020223 @see
20224 @return Result of the function call
20225*/
20226WDI_Status
20227WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020228(
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 WDI_ControlBlockType* pWDICtx,
20230 WDI_EventInfoType* pEventData
20231)
20232{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020233 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20234 tHalEnterBmpsRspParams halEnterBmpsRsp;
20235 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20236 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020237 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20239
20240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 -------------------------------------------------------------------------*/
20243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20244 ( NULL == pEventData->pEventData))
20245 {
20246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020250 }
20251
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020253 Extract response and send it to UMAC
20254 -------------------------------------------------------------------------*/
20255 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20256 {
20257 wpalMemoryCopy( &halEnterBmpsRsp,
20258 pEventData->pEventData,
20259 sizeof(halEnterBmpsRsp));
20260
20261 //Used to print debug message
20262 halStatus = halEnterBmpsRsp.status;
20263 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20264 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20265 }
20266 else
20267 {
20268 halStatus = *((eHalStatus*)pEventData->pEventData);
20269 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20270 }
20271
20272 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020273
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020274 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20275 * Other module states are taken care by PMC.
20276 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20277 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020278 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20279 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020280
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020282 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20283 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020284 /* Call Back is not required as we are putting the DXE in FULL
20285 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020286 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20287 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20288 {
20289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020290 "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 -080020291 WDI_ASSERT(0);
20292 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020293 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020294 }
20295
Jeff Johnson295189b2012-06-20 16:38:30 -070020296 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020297 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020298
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020300}/*WDI_ProcessEnterBmpsRsp*/
20301
20302/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020303 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020304 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020305
20306 @param pWDICtx: pointer to the WLAN DAL context
20307 pEventData: pointer to the event information structure
20308
Jeff Johnson295189b2012-06-20 16:38:30 -070020309 @see
20310 @return Result of the function call
20311*/
20312WDI_Status
20313WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020314(
Jeff Johnson295189b2012-06-20 16:38:30 -070020315 WDI_ControlBlockType* pWDICtx,
20316 WDI_EventInfoType* pEventData
20317)
20318{
Jeff Johnson295189b2012-06-20 16:38:30 -070020319 eHalStatus halStatus;
20320 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020321 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020322 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20323 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20325
20326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 -------------------------------------------------------------------------*/
20329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20330 ( NULL == pEventData->pEventData))
20331 {
20332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 }
20337
20338 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20339
20340 /*-------------------------------------------------------------------------
20341 Extract response and send it to UMAC
20342 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020343
20344 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20345 {
20346 wpalMemoryCopy( &halExitBmpsRsp,
20347 pEventData->pEventData,
20348 sizeof(halExitBmpsRsp));
20349
20350 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20351 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20352 }
20353 else
20354 {
20355 halStatus = *((eHalStatus*)pEventData->pEventData);
20356 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20357 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020358
20359 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020360 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20361 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20362 {
20363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020364 "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 -080020365 WDI_ASSERT(0);
20366 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20368
20369 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020370 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020371
Jeff Johnsone7245742012-09-05 17:12:55 -070020372 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020373}/*WDI_ProcessExitBmpsRsp*/
20374
20375/**
20376 @brief Process Enter UAPSD Rsp function (called when a response
20377 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020378
20379 @param pWDICtx: pointer to the WLAN DAL context
20380 pEventData: pointer to the event information structure
20381
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 @see
20383 @return Result of the function call
20384*/
20385WDI_Status
20386WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020387(
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 WDI_ControlBlockType* pWDICtx,
20389 WDI_EventInfoType* pEventData
20390)
20391{
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020393 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020395 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20396
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20398
20399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020400 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 -------------------------------------------------------------------------*/
20402 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20403 ( NULL == pEventData->pEventData))
20404 {
20405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020409 }
20410
20411 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20412
20413 /*-------------------------------------------------------------------------
20414 Extract response and send it to UMAC
20415 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020416 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20417 {
20418 wpalMemoryCopy( &halEnterUapsdRsp,
20419 pEventData->pEventData,
20420 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020421
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020422 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20423 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20424 }
20425 else
20426 {
20427 halStatus = *((eHalStatus*)pEventData->pEventData);
20428 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20429 }
20430
20431 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020432 {
20433 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20434 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20435 // the traffic to decide when to suspend the trigger frames when there is no traffic
20436 // activity on the trigger enabled ACs
20437 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20438
20439#ifdef WLAN_PERF
20440 // Increment the BD signature to refresh the fast path BD utilization
20441 pWDICtx->uBdSigSerialNum++;
20442#endif
20443 }
20444
20445 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020446 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020447
Jeff Johnsone7245742012-09-05 17:12:55 -070020448 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020449}/*WDI_ProcessEnterUapsdRsp*/
20450
20451/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020452 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020454
20455 @param pWDICtx: pointer to the WLAN DAL context
20456 pEventData: pointer to the event information structure
20457
Jeff Johnson295189b2012-06-20 16:38:30 -070020458 @see
20459 @return Result of the function call
20460*/
20461WDI_Status
20462WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020463(
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 WDI_ControlBlockType* pWDICtx,
20465 WDI_EventInfoType* pEventData
20466)
20467{
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 eHalStatus halStatus;
20469 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020470 tHalExitUapsdRspParams halExitUapsdRsp;
20471 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20473
20474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 -------------------------------------------------------------------------*/
20477 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20478 ( NULL == pEventData->pEventData))
20479 {
20480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 }
20485
20486 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20487
20488 /*-------------------------------------------------------------------------
20489 Extract response and send it to UMAC
20490 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020491 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20492 {
20493 wpalMemoryCopy( &halExitUapsdRsp,
20494 pEventData->pEventData,
20495 sizeof(halExitUapsdRsp));
20496
20497 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20498 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20499 }
20500 else
20501 {
20502 halStatus = *((eHalStatus*)pEventData->pEventData);
20503 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20504 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20506 // directly instead of the FW WQ.
20507 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20508
20509#ifdef WLAN_PERF
20510 // Increment the BD signature to refresh the fast path BD utilization
20511 pWDICtx->uBdSigSerialNum++;
20512#endif
20513
20514 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020515 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020516
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020518}/*WDI_ProcessExitUapsdRsp*/
20519
20520/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020523
20524 @param pWDICtx: pointer to the WLAN DAL context
20525 pEventData: pointer to the event information structure
20526
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 @see
20528 @return Result of the function call
20529*/
20530WDI_Status
20531WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020532(
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 WDI_ControlBlockType* pWDICtx,
20534 WDI_EventInfoType* pEventData
20535)
20536{
20537 WDI_Status wdiStatus;
20538 eHalStatus halStatus;
20539 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20541
20542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020543 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 -------------------------------------------------------------------------*/
20545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20546 ( NULL == pEventData->pEventData))
20547 {
20548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020552 }
20553
20554 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20555
20556 /*-------------------------------------------------------------------------
20557 Extract response and send it to UMAC
20558 -------------------------------------------------------------------------*/
20559 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020560 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020561
20562 /*Notify UMAC*/
20563 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20564
Jeff Johnsone7245742012-09-05 17:12:55 -070020565 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020566}/*WDI_ProcessSetUapsdAcParamsRsp*/
20567
20568/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020569 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020570 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020571
20572 @param pWDICtx: pointer to the WLAN DAL context
20573 pEventData: pointer to the event information structure
20574
Jeff Johnson295189b2012-06-20 16:38:30 -070020575 @see
20576 @return Result of the function call
20577*/
20578WDI_Status
20579WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020580(
Jeff Johnson295189b2012-06-20 16:38:30 -070020581 WDI_ControlBlockType* pWDICtx,
20582 WDI_EventInfoType* pEventData
20583)
20584{
20585 WDI_Status wdiStatus;
20586 eHalStatus halStatus;
20587 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20589
20590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020592 -------------------------------------------------------------------------*/
20593 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20594 ( NULL == pEventData->pEventData))
20595 {
20596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020597 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020600 }
20601
20602 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20603
20604 /*-------------------------------------------------------------------------
20605 Extract response and send it to UMAC
20606 -------------------------------------------------------------------------*/
20607 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020608 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020609
20610 /*Notify UMAC*/
20611 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20612
Jeff Johnsone7245742012-09-05 17:12:55 -070020613 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020614}/*WDI_ProcessUpdateUapsdParamsRsp*/
20615
20616/**
20617 @brief Process Configure RXP filter Rsp function (called when a
20618 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020619
20620 @param pWDICtx: pointer to the WLAN DAL context
20621 pEventData: pointer to the event information structure
20622
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 @see
20624 @return Result of the function call
20625*/
20626WDI_Status
20627WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020628(
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 WDI_ControlBlockType* pWDICtx,
20630 WDI_EventInfoType* pEventData
20631)
20632{
20633 WDI_Status wdiStatus;
20634 eHalStatus halStatus;
20635 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20637
20638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020640 -------------------------------------------------------------------------*/
20641 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20642 ( NULL == pEventData->pEventData))
20643 {
20644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 }
20649
20650 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20651
20652 /*-------------------------------------------------------------------------
20653 Extract response and send it to UMAC
20654 -------------------------------------------------------------------------*/
20655 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020656 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020657
20658 /*Notify UMAC*/
20659 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20660
Jeff Johnsone7245742012-09-05 17:12:55 -070020661 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020662}/*WDI_ProcessConfigureRxpFilterRsp*/
20663
20664/**
20665 @brief Process Set beacon filter Rsp function (called when a
20666 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020667
20668 @param pWDICtx: pointer to the WLAN DAL context
20669 pEventData: pointer to the event information structure
20670
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 @see
20672 @return Result of the function call
20673*/
20674WDI_Status
20675WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020676(
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 WDI_ControlBlockType* pWDICtx,
20678 WDI_EventInfoType* pEventData
20679)
20680{
20681 WDI_Status wdiStatus;
20682 eHalStatus halStatus;
20683 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20685
20686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 -------------------------------------------------------------------------*/
20689 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20690 ( NULL == pEventData->pEventData))
20691 {
20692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020693 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 }
20697
20698 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20699
20700 /*-------------------------------------------------------------------------
20701 Extract response and send it to UMAC
20702 -------------------------------------------------------------------------*/
20703 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020704 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020705
20706 /*Notify UMAC*/
20707 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20708
Jeff Johnsone7245742012-09-05 17:12:55 -070020709 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020710}/*WDI_ProcessSetBeaconFilterRsp*/
20711
20712/**
20713 @brief Process remove beacon filter Rsp function (called when a
20714 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020715
20716 @param pWDICtx: pointer to the WLAN DAL context
20717 pEventData: pointer to the event information structure
20718
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 @see
20720 @return Result of the function call
20721*/
20722WDI_Status
20723WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020724(
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 WDI_ControlBlockType* pWDICtx,
20726 WDI_EventInfoType* pEventData
20727)
20728{
20729 WDI_Status wdiStatus;
20730 eHalStatus halStatus;
20731 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20733
20734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 -------------------------------------------------------------------------*/
20737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20738 ( NULL == pEventData->pEventData))
20739 {
20740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 }
20745
20746 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20747
20748 /*-------------------------------------------------------------------------
20749 Extract response and send it to UMAC
20750 -------------------------------------------------------------------------*/
20751 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020752 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020753
20754 /*Notify UMAC*/
20755 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20756
Jeff Johnsone7245742012-09-05 17:12:55 -070020757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020758}/*WDI_ProcessRemBeaconFilterRsp*/
20759
20760/**
20761 @brief Process set RSSI thresholds Rsp function (called when a
20762 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020763
20764 @param pWDICtx: pointer to the WLAN DAL context
20765 pEventData: pointer to the event information structure
20766
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 @see
20768 @return Result of the function call
20769*/
20770WDI_Status
20771WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020772(
Jeff Johnson295189b2012-06-20 16:38:30 -070020773 WDI_ControlBlockType* pWDICtx,
20774 WDI_EventInfoType* pEventData
20775)
20776{
20777 WDI_Status wdiStatus;
20778 eHalStatus halStatus;
20779 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20781
20782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 -------------------------------------------------------------------------*/
20785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20786 ( NULL == pEventData->pEventData))
20787 {
20788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 }
20793
20794 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20795
20796 /*-------------------------------------------------------------------------
20797 Extract response and send it to UMAC
20798 -------------------------------------------------------------------------*/
20799 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020800 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020801
20802 /*Notify UMAC*/
20803 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20804
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020806}/*WDI_ProcessSetRSSIThresoldsRsp*/
20807
20808/**
20809 @brief Process host offload Rsp function (called when a
20810 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020811
20812 @param pWDICtx: pointer to the WLAN DAL context
20813 pEventData: pointer to the event information structure
20814
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 @see
20816 @return Result of the function call
20817*/
20818WDI_Status
20819WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020820(
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 WDI_ControlBlockType* pWDICtx,
20822 WDI_EventInfoType* pEventData
20823)
20824{
20825 WDI_Status wdiStatus;
20826 eHalStatus halStatus;
20827 WDI_HostOffloadCb wdiHostOffloadCb;
20828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20829
20830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020831 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 -------------------------------------------------------------------------*/
20833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20834 ( NULL == pEventData->pEventData))
20835 {
20836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 }
20841
20842 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20843
20844 /*-------------------------------------------------------------------------
20845 Extract response and send it to UMAC
20846 -------------------------------------------------------------------------*/
20847 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020848 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020849
20850 /*Notify UMAC*/
20851 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20852
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020854}/*WDI_ProcessHostOffloadRsp*/
20855
20856/**
20857 @brief Process keep alive Rsp function (called when a
20858 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020859
20860 @param pWDICtx: pointer to the WLAN DAL context
20861 pEventData: pointer to the event information structure
20862
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 @see
20864 @return Result of the function call
20865*/
20866WDI_Status
20867WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020868(
Jeff Johnson295189b2012-06-20 16:38:30 -070020869 WDI_ControlBlockType* pWDICtx,
20870 WDI_EventInfoType* pEventData
20871)
20872{
20873 WDI_Status wdiStatus;
20874 eHalStatus halStatus;
20875 WDI_KeepAliveCb wdiKeepAliveCb;
20876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053020877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20879
20880
20881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020882 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020883 -------------------------------------------------------------------------*/
20884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20885 ( NULL == pEventData->pEventData))
20886 {
20887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020891 }
20892
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20894
Jeff Johnson295189b2012-06-20 16:38:30 -070020895 /*-------------------------------------------------------------------------
20896 Extract response and send it to UMAC
20897 -------------------------------------------------------------------------*/
20898 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020899 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020900
20901 /*Notify UMAC*/
20902 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20903
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020905}/*WDI_ProcessKeepAliveRsp*/
20906
20907/**
20908 @brief Process wowl add ptrn Rsp function (called when a
20909 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020910
20911 @param pWDICtx: pointer to the WLAN DAL context
20912 pEventData: pointer to the event information structure
20913
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 @see
20915 @return Result of the function call
20916*/
20917WDI_Status
20918WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020919(
Jeff Johnson295189b2012-06-20 16:38:30 -070020920 WDI_ControlBlockType* pWDICtx,
20921 WDI_EventInfoType* pEventData
20922)
20923{
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 eHalStatus halStatus;
20925 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020926 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20927 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20928
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20930
20931 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020932 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020933 -------------------------------------------------------------------------*/
20934 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20935 ( NULL == pEventData->pEventData))
20936 {
20937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 }
20942
20943 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20944
20945 /*-------------------------------------------------------------------------
20946 Extract response and send it to UMAC
20947 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020948 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20949 {
20950 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20951 pEventData->pEventData,
20952 sizeof(halAddWowlBcastPtrRsp));
20953
20954 wdiWowlAddBcPtrRsp.wdiStatus =
20955 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20956 }
20957 else
20958 {
20959 halStatus = *((eHalStatus*)pEventData->pEventData);
20960 wdiWowlAddBcPtrRsp.wdiStatus =
20961 WDI_HAL_2_WDI_STATUS(halStatus);
20962 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020963
20964 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020965 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020966
Jeff Johnsone7245742012-09-05 17:12:55 -070020967 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020968}/*WDI_ProcessWowlAddBcPtrnRsp*/
20969
20970/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020973
20974 @param pWDICtx: pointer to the WLAN DAL context
20975 pEventData: pointer to the event information structure
20976
Jeff Johnson295189b2012-06-20 16:38:30 -070020977 @see
20978 @return Result of the function call
20979*/
20980WDI_Status
20981WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020982(
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 WDI_ControlBlockType* pWDICtx,
20984 WDI_EventInfoType* pEventData
20985)
20986{
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 eHalStatus halStatus;
20988 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020989 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20990 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20992
20993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020995 -------------------------------------------------------------------------*/
20996 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20997 ( NULL == pEventData->pEventData))
20998 {
20999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021003 }
21004
21005 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
21006
21007 /*-------------------------------------------------------------------------
21008 Extract response and send it to UMAC
21009 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021010 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21011 {
21012 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
21013 pEventData->pEventData,
21014 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070021015
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021016 wdiWowlDelBcstPtrRsp.wdiStatus =
21017 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
21018 }
21019 else
21020 {
21021 halStatus = *((eHalStatus*)pEventData->pEventData);
21022 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
21023 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021025 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021026
Jeff Johnsone7245742012-09-05 17:12:55 -070021027 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021028}/*WDI_ProcessWowlDelBcPtrnRsp*/
21029
21030/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021031 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021032 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021033
21034 @param pWDICtx: pointer to the WLAN DAL context
21035 pEventData: pointer to the event information structure
21036
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 @see
21038 @return Result of the function call
21039*/
21040WDI_Status
21041WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021042(
Jeff Johnson295189b2012-06-20 16:38:30 -070021043 WDI_ControlBlockType* pWDICtx,
21044 WDI_EventInfoType* pEventData
21045)
21046{
Jeff Johnson295189b2012-06-20 16:38:30 -070021047 eHalStatus halStatus;
21048 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021049 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
21050 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21052
21053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021055 -------------------------------------------------------------------------*/
21056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21057 ( NULL == pEventData->pEventData))
21058 {
21059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021063 }
21064
21065 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
21066
21067 /*-------------------------------------------------------------------------
21068 Extract response and send it to UMAC
21069 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021070 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21071 {
21072 wpalMemoryCopy( &halEnterWowlRspParams,
21073 (wpt_uint8*)pEventData->pEventData,
21074 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021075
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021076 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
21077 wdiwowlEnterRsp.status =
21078 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
21079 }
21080 else
21081 {
21082 halStatus = *((eHalStatus*)pEventData->pEventData);
21083 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21084 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021086 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021087
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021089}/*WDI_ProcessWowlEnterRsp*/
21090
21091/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021092 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021093 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021094
21095 @param pWDICtx: pointer to the WLAN DAL context
21096 pEventData: pointer to the event information structure
21097
Jeff Johnson295189b2012-06-20 16:38:30 -070021098 @see
21099 @return Result of the function call
21100*/
21101WDI_Status
21102WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021103(
Jeff Johnson295189b2012-06-20 16:38:30 -070021104 WDI_ControlBlockType* pWDICtx,
21105 WDI_EventInfoType* pEventData
21106)
21107{
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 eHalStatus halStatus;
21109 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021110 tHalExitWowlRspParams halExitWowlRspParams;
21111 WDI_WowlExitRspParamsType wdiWowlExitRsp;
21112
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21114
21115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 -------------------------------------------------------------------------*/
21118 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21119 ( NULL == pEventData->pEventData))
21120 {
21121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 }
21126
21127 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
21128
21129 /*-------------------------------------------------------------------------
21130 Extract response and send it to UMAC
21131 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021132 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21133 {
21134 wpalMemoryCopy( &halExitWowlRspParams,
21135 pEventData->pEventData,
21136 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021137
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021138 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
21139 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
21140
21141 }
21142 else
21143 {
21144 halStatus = *((eHalStatus*)pEventData->pEventData);
21145 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21146 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021147 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021148 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021149
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021151}/*WDI_ProcessWowlExitRsp*/
21152
21153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021154 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 (called when a response is being received over the bus
21156 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021157
21158 @param pWDICtx: pointer to the WLAN DAL context
21159 pEventData: pointer to the event information structure
21160
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 @see
21162 @return Result of the function call
21163*/
21164WDI_Status
21165WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021166(
Jeff Johnson295189b2012-06-20 16:38:30 -070021167 WDI_ControlBlockType* pWDICtx,
21168 WDI_EventInfoType* pEventData
21169)
21170{
21171 WDI_Status wdiStatus;
21172 eHalStatus halStatus;
21173 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21175
21176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 -------------------------------------------------------------------------*/
21179 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21180 ( NULL == pEventData->pEventData))
21181 {
21182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 }
21187
21188 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21189
21190 /*-------------------------------------------------------------------------
21191 Extract response and send it to UMAC
21192 -------------------------------------------------------------------------*/
21193 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021195
21196 /*Notify UMAC*/
21197 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21198
Jeff Johnsone7245742012-09-05 17:12:55 -070021199 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021200}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21201
21202
21203/**
21204 @brief Process Nv download(called when a response
21205 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021206
21207 @param pWDICtx: pointer to the WLAN DAL context
21208 pEventData: pointer to the event information structure
21209
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 @see
21211 @return Result of the function call
21212*/
21213WDI_Status
21214WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021215(
Jeff Johnson295189b2012-06-20 16:38:30 -070021216 WDI_ControlBlockType* pWDICtx,
21217 WDI_EventInfoType* pEventData
21218)
21219{
21220
21221 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21222 tHalNvImgDownloadRspParams halNvDownloadRsp;
21223 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21224
21225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 -------------------------------------------------------------------------*/
21228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21229 ( NULL == pEventData->pEventData))
21230 {
21231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 }
21236
21237 /*-------------------------------------------------------------------------
21238 Extract response and send it to UMAC
21239 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 wpalMemoryCopy( &halNvDownloadRsp,
21241 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 sizeof(halNvDownloadRsp));
21243
21244 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21245
21246 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021247 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21248 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021249 {
21250 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 }
21253 else
21254 {
21255 /*Reset the Nv related global information in WDI context information */
21256 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21257 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21258 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21259 /*call WDA callback function for last fragment */
21260 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21261 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21262 }
21263
Jeff Johnsone7245742012-09-05 17:12:55 -070021264 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021265}
21266#ifdef WLAN_FEATURE_VOWIFI_11R
21267/**
21268 @brief Process Add TSpec Rsp function (called when a response
21269 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021270
21271 @param pWDICtx: pointer to the WLAN DAL context
21272 pEventData: pointer to the event information structure
21273
Jeff Johnson295189b2012-06-20 16:38:30 -070021274 @see
21275 @return Result of the function call
21276*/
21277WDI_Status
21278WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021279(
Jeff Johnson295189b2012-06-20 16:38:30 -070021280 WDI_ControlBlockType* pWDICtx,
21281 WDI_EventInfoType* pEventData
21282)
21283{
21284 WDI_Status wdiStatus;
21285 tAggrAddTsRspParams aggrAddTsRsp;
21286 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21288
21289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 -------------------------------------------------------------------------*/
21292 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21293 ( NULL == pEventData->pEventData))
21294 {
21295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 }
21300
21301 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21302
21303 /*-------------------------------------------------------------------------
21304 Extract response and send it to UMAC
21305 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021306 wpalMemoryCopy( &aggrAddTsRsp,
21307 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021308 sizeof(aggrAddTsRsp));
21309
21310 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021312
21313 /*Notify UMAC*/
21314 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21315
Jeff Johnsone7245742012-09-05 17:12:55 -070021316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021317}/*WDI_ProcessAddTSpecRsp*/
21318#endif /* WLAN_FEATURE_VOWIFI_11R */
21319
21320/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021321 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021322 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021323
21324 @param pWDICtx: pointer to the WLAN DAL context
21325 pEventData: pointer to the event information structure
21326
Jeff Johnson295189b2012-06-20 16:38:30 -070021327 @see
21328 @return Result of the function call
21329*/
21330WDI_Status
21331WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021332(
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 WDI_ControlBlockType* pWDICtx,
21334 WDI_EventInfoType* pEventData
21335)
21336{
21337 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21338 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21339 tHalHostResumeRspParams hostResumeRspMsg;
21340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21341
21342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 -------------------------------------------------------------------------*/
21345 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21346 ( NULL == pEventData->pEventData))
21347 {
21348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 }
21353
21354 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21355
21356 /*-------------------------------------------------------------------------
21357 Extract response and send it to UMAC
21358 -------------------------------------------------------------------------*/
21359
Jeff Johnsone7245742012-09-05 17:12:55 -070021360 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021361 (wpt_uint8*)pEventData->pEventData,
21362 sizeof(hostResumeRspMsg));
21363
Jeff Johnsone7245742012-09-05 17:12:55 -070021364 wdiResumeRspParams.wdiStatus =
21365 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021366
21367 /*Notify UMAC*/
21368 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21369
21370 return WDI_STATUS_SUCCESS;
21371}
21372
21373/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021374 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021375 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021376
21377 @param pWDICtx: pointer to the WLAN DAL context
21378 pEventData: pointer to the event information structure
21379
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 @see
21381 @return Result of the function call
21382*/
21383WDI_Status
21384WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021385(
Jeff Johnson295189b2012-06-20 16:38:30 -070021386 WDI_ControlBlockType* pWDICtx,
21387 WDI_EventInfoType* pEventData
21388)
21389{
21390 WDI_Status wdiStatus;
21391 eHalStatus halStatus;
21392 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21394
21395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021397 -------------------------------------------------------------------------*/
21398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21399 ( NULL == pEventData->pEventData))
21400 {
21401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021405 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021406
21407 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021408
21409 /*-------------------------------------------------------------------------
21410 Extract response and send it to UMAC
21411 -------------------------------------------------------------------------*/
21412 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021413 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021414
21415 /*Notify UMAC*/
21416 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21417
Jeff Johnsone7245742012-09-05 17:12:55 -070021418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021419}/*WDI_ProcessSetTxPerTrackingRsp*/
21420
21421/*==========================================================================
21422 Indications from HAL
21423 ==========================================================================*/
21424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021425 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 indication of this kind is being received over the bus
21427 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021428
21429 @param pWDICtx: pointer to the WLAN DAL context
21430 pEventData: pointer to the event information structure
21431
Jeff Johnson295189b2012-06-20 16:38:30 -070021432 @see
21433 @return Result of the function call
21434*/
21435WDI_Status
21436WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021437(
Jeff Johnson295189b2012-06-20 16:38:30 -070021438 WDI_ControlBlockType* pWDICtx,
21439 WDI_EventInfoType* pEventData
21440)
21441{
21442 WDI_LowLevelIndType wdiInd;
21443 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21445
21446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 -------------------------------------------------------------------------*/
21449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21450 ( NULL == pEventData->pEventData))
21451 {
21452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 }
21457
21458 /*-------------------------------------------------------------------------
21459 Extract indication and send it to UMAC
21460 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021461 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21462 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021463 sizeof(tHalRSSINotification));
21464
21465 /*Fill in the indication parameters*/
21466 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21467 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21468 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21469 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21470 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21471 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21472 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21473 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21474 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21475 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21476 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21477 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21478 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021479 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21480 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021481
ltimariub77f24b2013-01-24 18:54:33 -080021482 if ( pWDICtx->wdiLowLevelIndCB )
21483 {
21484 /*Notify UMAC of indication*/
21485 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21486 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021487
21488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021489}/*WDI_ProcessLowRSSIInd*/
21490
21491
21492/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021494 an indication of this kind is being received over the
21495 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021496
21497 @param pWDICtx: pointer to the WLAN DAL context
21498 pEventData: pointer to the event information structure
21499
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 @see
21501 @return Result of the function call
21502*/
21503WDI_Status
21504WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021505(
Jeff Johnson295189b2012-06-20 16:38:30 -070021506 WDI_ControlBlockType* pWDICtx,
21507 WDI_EventInfoType* pEventData
21508)
21509{
21510 WDI_Status wdiStatus;
21511 eHalStatus halStatus;
21512 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021513 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21515
21516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021518 -------------------------------------------------------------------------*/
21519 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21520 ( NULL == pEventData->pEventData))
21521 {
21522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021527 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 /*-------------------------------------------------------------------------
21529 Extract indication and send it to UMAC
21530 -------------------------------------------------------------------------*/
21531 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21532 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021534
21535 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021537 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21538 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021539 if ( pWDICtx->wdiLowLevelIndCB )
21540 {
21541 /*Notify UMAC*/
21542 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21543 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021544
21545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021546}/*WDI_ProcessMissedBeaconInd*/
21547
21548
21549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 an indication of this kind is being received over the
21552 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021553
21554 @param pWDICtx: pointer to the WLAN DAL context
21555 pEventData: pointer to the event information structure
21556
Jeff Johnson295189b2012-06-20 16:38:30 -070021557 @see
21558 @return Result of the function call
21559*/
21560WDI_Status
21561WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021562(
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 WDI_ControlBlockType* pWDICtx,
21564 WDI_EventInfoType* pEventData
21565)
21566{
21567 WDI_Status wdiStatus;
21568 eHalStatus halStatus;
21569 WDI_LowLevelIndType wdiInd;
21570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21571
21572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021574 -------------------------------------------------------------------------*/
21575 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21576 ( NULL == pEventData->pEventData))
21577 {
21578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021579 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021582 }
21583
21584 /*-------------------------------------------------------------------------
21585 Extract indication and send it to UMAC
21586 -------------------------------------------------------------------------*/
21587 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21588 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021590
21591 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021592 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 /* ! TO DO - fill in from HAL struct:
21594 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21595
ltimariub77f24b2013-01-24 18:54:33 -080021596 if ( pWDICtx->wdiLowLevelIndCB )
21597 {
21598 /*Notify UMAC*/
21599 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21600 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021601
21602 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021603}/*WDI_ProcessUnkAddrFrameInd*/
21604
21605
21606/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 indication of this kind is being received over the bus
21609 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021610
21611 @param pWDICtx: pointer to the WLAN DAL context
21612 pEventData: pointer to the event information structure
21613
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 @see
21615 @return Result of the function call
21616*/
21617WDI_Status
21618WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021619(
Jeff Johnson295189b2012-06-20 16:38:30 -070021620 WDI_ControlBlockType* pWDICtx,
21621 WDI_EventInfoType* pEventData
21622)
21623{
21624 WDI_LowLevelIndType wdiInd;
21625 tpSirMicFailureInd pHalMicFailureInd;
21626
21627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21628
21629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021630 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 -------------------------------------------------------------------------*/
21632 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21633 ( NULL == pEventData->pEventData))
21634 {
21635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021639 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021640
Jeff Johnson295189b2012-06-20 16:38:30 -070021641 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21642 /*-------------------------------------------------------------------------
21643 Extract indication and send it to UMAC
21644 -------------------------------------------------------------------------*/
21645
21646 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021647 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021648 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21649 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21650 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21651 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21652 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21653 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21654 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21655 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021660 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 pHalMicFailureInd->info.keyId;
21662 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21663 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21664 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21665 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021666
21667 if ( pWDICtx->wdiLowLevelIndCB )
21668 {
21669 /*Notify UMAC*/
21670 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21671 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021672
21673 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021674}/*WDI_ProcessMicFailureInd*/
21675
21676
21677/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 an indication of this kind is being received over the
21680 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021681
21682 @param pWDICtx: pointer to the WLAN DAL context
21683 pEventData: pointer to the event information structure
21684
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 @see
21686 @return Result of the function call
21687*/
21688WDI_Status
21689WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021690(
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 WDI_ControlBlockType* pWDICtx,
21692 WDI_EventInfoType* pEventData
21693)
21694{
21695 WDI_Status wdiStatus;
21696 eHalStatus halStatus;
21697 WDI_LowLevelIndType wdiInd;
21698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21699
21700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 -------------------------------------------------------------------------*/
21703 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21704 ( NULL == pEventData->pEventData))
21705 {
21706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 }
21711
21712 /*-------------------------------------------------------------------------
21713 Extract indication and send it to UMAC
21714 -------------------------------------------------------------------------*/
21715
21716 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21717 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021718 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021719
21720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21721 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021722
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021724 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21725 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021726
ltimariub77f24b2013-01-24 18:54:33 -080021727 if ( pWDICtx->wdiLowLevelIndCB )
21728 {
21729 /*Notify UMAC*/
21730 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21731 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021732
21733 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021734}/*WDI_ProcessFatalErrorInd*/
21735
21736/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021737 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021738 an indication of this kind is being received over the
21739 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021740
21741 @param pWDICtx: pointer to the WLAN DAL context
21742 pEventData: pointer to the event information structure
21743
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 @see
21745 @return Result of the function call
21746*/
21747WDI_Status
21748WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021749(
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 WDI_ControlBlockType* pWDICtx,
21751 WDI_EventInfoType* pEventData
21752)
21753{
21754 tDeleteStaContextParams halDelSTACtx;
21755 WDI_LowLevelIndType wdiInd;
21756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21757
21758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 -------------------------------------------------------------------------*/
21761 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21762 ( NULL == pEventData->pEventData))
21763 {
21764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021768 }
21769
21770 /*-------------------------------------------------------------------------
21771 Extract indication and send it to UMAC
21772 -------------------------------------------------------------------------*/
21773
21774 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021775 wpalMemoryCopy( &halDelSTACtx,
21776 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 sizeof(halDelSTACtx));
21778
21779 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021780 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021781
21782 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21783 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21784 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21785 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21786
Jeff Johnsone7245742012-09-05 17:12:55 -070021787 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021788 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021789 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021791 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21792 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021793
ltimariub77f24b2013-01-24 18:54:33 -080021794 if ( pWDICtx->wdiLowLevelIndCB )
21795 {
21796 /*Notify UMAC*/
21797 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21798 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021799
21800 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021801}/*WDI_ProcessDelSTAInd*/
21802
21803/**
21804*@brief Process Coex Indication function (called when
21805 an indication of this kind is being received over the
21806 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021807
21808 @param pWDICtx: pointer to the WLAN DAL context
21809 pEventData: pointer to the event information structure
21810
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 @see
21812 @return Result of the function call
21813*/
21814WDI_Status
21815WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021816(
Jeff Johnson295189b2012-06-20 16:38:30 -070021817 WDI_ControlBlockType* pWDICtx,
21818 WDI_EventInfoType* pEventData
21819)
21820{
21821 WDI_LowLevelIndType wdiInd;
21822 tCoexIndMsg halCoexIndMsg;
21823 wpt_uint32 index;
21824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21825
21826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021827 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021828 -------------------------------------------------------------------------*/
21829 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21830 ( NULL == pEventData->pEventData ))
21831 {
21832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021833 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 }
21837
21838 /*-------------------------------------------------------------------------
21839 Extract indication and send it to UMAC
21840 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21842 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021843 sizeof(halCoexIndMsg.coexIndParams) );
21844
21845 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 wdiInd.wdiIndicationType = WDI_COEX_IND;
21847 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021848 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21849 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021850 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021851 }
21852
21853 // DEBUG
21854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21855 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021856 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21857 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21858 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21859 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21860 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021861
ltimariub77f24b2013-01-24 18:54:33 -080021862 if ( pWDICtx->wdiLowLevelIndCB )
21863 {
21864 /*Notify UMAC*/
21865 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21866 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021867
21868 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021869}/*WDI_ProcessCoexInd*/
21870
21871/**
21872*@brief Process Tx Complete Indication function (called when
21873 an indication of this kind is being received over the
21874 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021875
21876 @param pWDICtx: pointer to the WLAN DAL context
21877 pEventData: pointer to the event information structure
21878
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 @see
21880 @return Result of the function call
21881*/
21882WDI_Status
21883WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021884(
Jeff Johnson295189b2012-06-20 16:38:30 -070021885 WDI_ControlBlockType* pWDICtx,
21886 WDI_EventInfoType* pEventData
21887)
21888{
21889 WDI_LowLevelIndType wdiInd;
21890 tTxComplIndMsg halTxComplIndMsg;
21891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21892
21893 /*-------------------------------------------------------------------------
21894 Sanity check
21895 -------------------------------------------------------------------------*/
21896 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21897 ( NULL == pEventData->pEventData ))
21898 {
21899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021900 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 WDI_ASSERT( 0 );
21902 return WDI_STATUS_E_FAILURE;
21903 }
21904
21905 /*-------------------------------------------------------------------------
21906 Extract indication and send it to UMAC
21907 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21909 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021910 sizeof(halTxComplIndMsg.txComplParams) );
21911
21912 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021913 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021914
21915 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21916 &halTxComplIndMsg.txComplParams,
21917 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021918
ltimariub77f24b2013-01-24 18:54:33 -080021919 if ( pWDICtx->wdiLowLevelIndCB )
21920 {
21921 /*Notify UMAC*/
21922 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21923 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021924
21925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021926}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021927#ifdef FEATURE_WLAN_TDLS
21928/**
21929*@brief Process TDLS Indication function (called when
21930 an indication of this kind is being received over the
21931 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021932
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021933 @param pWDICtx: pointer to the WLAN DAL context
21934 pEventData: pointer to the event information structure
21935
21936 @see
21937 @return Result of the function call
21938*/
21939WDI_Status
21940WDI_ProcessTdlsInd
21941(
21942 WDI_ControlBlockType* pWDICtx,
21943 WDI_EventInfoType* pEventData
21944)
21945{
21946 WDI_LowLevelIndType wdiInd;
21947 tTdlsIndMsg halTdlsIndMsg;
21948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21949
21950 /*-------------------------------------------------------------------------
21951 Sanity check
21952 -------------------------------------------------------------------------*/
21953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21954 ( NULL == pEventData->pEventData ))
21955 {
21956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21957 "%s: Invalid parameters", __func__);
21958 WDI_ASSERT( 0 );
21959 return WDI_STATUS_E_FAILURE;
21960 }
21961
21962 /*-------------------------------------------------------------------------
21963 Extract indication and send it to UMAC
21964 -------------------------------------------------------------------------*/
21965 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21966 pEventData->pEventData,
21967 sizeof(halTdlsIndMsg.tdlsIndParams) );
21968
21969 /*Fill in the indication parameters*/
21970 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21971
21972 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21973 = halTdlsIndMsg.tdlsIndParams.status;
21974
21975 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21976 = halTdlsIndMsg.tdlsIndParams.staIdx;
21977
21978 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21979 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21980
Atul Mittalbb2aad02014-09-22 19:09:36 +053021981 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21982 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021983 /*Notify UMAC*/
21984 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21985
21986 return WDI_STATUS_SUCCESS;
21987}/*WDI_ProcessTdlsInd*/
21988#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +053021989
21990#ifdef WLAN_FEATURE_RMC
21991/**
21992*@brief Process Tx Fail Indication
21993
21994 @param pWDICtx: pointer to the WLAN DAL context
21995 pEventData: pointer to the event information structure
21996
21997 @see
21998 @return Result of the function call
21999*/
22000WDI_Status
22001WDI_ProcessTXFailInd
22002(
22003 WDI_ControlBlockType* pWDICtx,
22004 WDI_EventInfoType* pEventData
22005)
22006{
22007 WDI_LowLevelIndType wdiInd;
22008 tHalTXFailIndMsg halTXFailIndMsg;
22009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22010
22011 /*-------------------------------------------------------------------------
22012 Sanity check
22013 -------------------------------------------------------------------------*/
22014 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22015 ( NULL == pEventData->pEventData ))
22016 {
22017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22018 "%s: Invalid parameters", __func__);
22019 WDI_ASSERT( 0 );
22020 return WDI_STATUS_E_FAILURE;
22021 }
22022 /*-------------------------------------------------------------------------
22023 Extract indication and send it to UMAC
22024 -------------------------------------------------------------------------*/
22025 wpalMemoryCopy( &halTXFailIndMsg.txFailIndParams,
22026 pEventData->pEventData,
22027 sizeof(halTXFailIndMsg.txFailIndParams) );
22028
22029 /*Fill in the indication parameters*/
22030 wdiInd.wdiIndicationType = WDI_TX_FAIL_IND;
22031
22032 wdiInd.wdiIndicationData.wdiTXFailInd.seqNo
22033 = halTXFailIndMsg.txFailIndParams.seqNo;
22034
22035 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiTXFailInd.macAddr,
22036 halTXFailIndMsg.txFailIndParams.macAddr,
22037 sizeof(wdiInd.wdiIndicationData.wdiTXFailInd.macAddr));
22038
22039 /*Notify UMAC*/
22040 if (pWDICtx->wdiLowLevelIndCB)
22041 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22042
22043 return WDI_STATUS_SUCCESS;
22044}
22045#endif /* WLAN_FEATURE_RMC */
22046
Jeff Johnson295189b2012-06-20 16:38:30 -070022047/**
Viral Modid86bde22012-12-10 13:09:21 -080022048*@brief Process Noa Start Indication function (called when
22049 an indication of this kind is being received over the
22050 bus from HAL)
22051
22052 @param pWDICtx: pointer to the WLAN DAL context
22053 pEventData: pointer to the event information structure
22054
22055 @see
22056 @return Result of the function call
22057*/
22058WDI_Status
22059WDI_ProcessP2pNoaStartInd
22060(
22061 WDI_ControlBlockType* pWDICtx,
22062 WDI_EventInfoType* pEventData
22063)
22064{
22065 WDI_LowLevelIndType wdiInd;
22066 tNoaStartIndMsg halNoaStartIndMsg;
22067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22068
22069 /*-------------------------------------------------------------------------
22070 Sanity check
22071 -------------------------------------------------------------------------*/
22072 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22073 ( NULL == pEventData->pEventData ))
22074 {
22075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22076 "%s: Invalid parameters", __func__);
22077 WDI_ASSERT( 0 );
22078 return WDI_STATUS_E_FAILURE;
22079 }
22080
22081 /*-------------------------------------------------------------------------
22082 Extract indication and send it to UMAC
22083 -------------------------------------------------------------------------*/
22084 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
22085 pEventData->pEventData,
22086 sizeof(halNoaStartIndMsg.noaStartIndParams) );
22087
22088 /*Fill in the indication parameters*/
22089 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
22090
22091 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
22092 = halNoaStartIndMsg.noaStartIndParams.status;
22093
22094 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
22095 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
22096
22097 /*Notify UMAC*/
22098 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22099
22100 return WDI_STATUS_SUCCESS;
22101}/*WDI_ProcessNoaAttrInd*/
22102
22103/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022104*@brief Process Noa Attr Indication function (called when
22105 an indication of this kind is being received over the
22106 bus from HAL)
22107
22108 @param pWDICtx: pointer to the WLAN DAL context
22109 pEventData: pointer to the event information structure
22110
22111 @see
22112 @return Result of the function call
22113*/
22114WDI_Status
22115WDI_ProcessP2pNoaAttrInd
22116(
22117 WDI_ControlBlockType* pWDICtx,
22118 WDI_EventInfoType* pEventData
22119)
22120{
22121 WDI_LowLevelIndType wdiInd;
22122 tNoaAttrIndMsg halNoaAttrIndMsg;
22123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22124
22125 /*-------------------------------------------------------------------------
22126 Sanity check
22127 -------------------------------------------------------------------------*/
22128 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22129 ( NULL == pEventData->pEventData ))
22130 {
22131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 WDI_ASSERT( 0 );
22134 return WDI_STATUS_E_FAILURE;
22135 }
22136
22137 /*-------------------------------------------------------------------------
22138 Extract indication and send it to UMAC
22139 -------------------------------------------------------------------------*/
22140 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
22141 pEventData->pEventData,
22142 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
22143
22144 /*Fill in the indication parameters*/
22145 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070022146
Jeff Johnson295189b2012-06-20 16:38:30 -070022147 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
22148 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070022149
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
22151 = halNoaAttrIndMsg.noaAttrIndParams.index;
22152 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
22153 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
22154 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
22155 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070022156
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
22158 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
22159 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
22160 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
22161 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
22162 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
22163 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
22164 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070022165
Jeff Johnson295189b2012-06-20 16:38:30 -070022166 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
22167 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
22168 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
22169 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
22170 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
22171 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
22172 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
22173 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
22174
ltimariub77f24b2013-01-24 18:54:33 -080022175 if ( pWDICtx->wdiLowLevelIndCB )
22176 {
22177 /*Notify UMAC*/
22178 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22179 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022180
22181 return WDI_STATUS_SUCCESS;
22182}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022183
22184/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022185 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 an indication of this kind is being received over the
22187 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022188
22189 @param pWDICtx: pointer to the WLAN DAL context
22190 pEventData: pointer to the event information structure
22191
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 @see
22193 @return Result of the function call
22194*/
22195WDI_Status
22196WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022197(
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 WDI_ControlBlockType* pWDICtx,
22199 WDI_EventInfoType* pEventData
22200)
22201{
22202 WDI_LowLevelIndType wdiInd;
22203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022204
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 /*-------------------------------------------------------------------------
22206 Extract indication and send it to UMAC
22207 -------------------------------------------------------------------------*/
22208 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022209 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
22210
ltimariub77f24b2013-01-24 18:54:33 -080022211 if ( pWDICtx->wdiLowLevelIndCB )
22212 {
22213 /*Notify UMAC*/
22214 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22215 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022216
Jeff Johnsone7245742012-09-05 17:12:55 -070022217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022218}/*WDI_ProcessTxPerHitInd*/
22219
Jeff Johnson295189b2012-06-20 16:38:30 -070022220/**
Yue Mab9c86f42013-08-14 15:59:08 -070022221 @brief Process Periodic Tx Pattern Fw Indication function
22222
22223 @param pWDICtx: pointer to the WLAN DAL context
22224 pEventData: pointer to the event information structure
22225
22226 @see
22227 @return Result of the function call
22228*/
22229WDI_Status
22230WDI_ProcessPeriodicTxPtrnFwInd
22231(
22232 WDI_ControlBlockType* pWDICtx,
22233 WDI_EventInfoType* pEventData
22234)
22235{
22236 WDI_LowLevelIndType wdiInd;
22237
22238 /*-------------------------------------------------------------------------
22239 Sanity check
22240 -------------------------------------------------------------------------*/
22241 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22242 (NULL == pEventData->pEventData))
22243 {
22244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22245 "%s: Invalid parameters", __func__);
22246 WDI_ASSERT(0);
22247 return WDI_STATUS_E_FAILURE;
22248 }
22249
22250 /*-------------------------------------------------------------------------
22251 Extract indication and send it to UMAC
22252 -------------------------------------------------------------------------*/
22253 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22254 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22255 sizeof(tHalPeriodicTxPtrnFwInd));
22256
22257 if (pWDICtx->wdiLowLevelIndCB)
22258 {
22259 /*Notify UMAC*/
22260 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22261 }
22262
22263 return WDI_STATUS_SUCCESS;
22264}
22265
22266/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 @brief WDI_ProcessFTMCommandReq
22268 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022269
22270 @param pWDICtx: pointer to the WLAN DAL context
22271 pEventData: pointer to the event information structure
22272
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 @see
22274 @return Result of the function call
22275*/
22276WDI_Status
22277WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022278(
Jeff Johnson295189b2012-06-20 16:38:30 -070022279 WDI_ControlBlockType* pWDICtx,
22280 WDI_EventInfoType* pEventData
22281)
22282{
22283 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22284 wpt_uint8 *ftmCommandBuffer = NULL;
22285 wpt_uint16 dataOffset;
22286 wpt_uint16 bufferSize;
22287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 -------------------------------------------------------------------------*/
22290 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22291 ( NULL == pEventData->pEventData))
22292
22293 {
22294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 }
22299
22300 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22301
22302 /* Get MSG Buffer */
22303 WDI_GetMessageBuffer(pWDICtx,
22304 WDI_FTM_CMD_REQ,
22305 ftmCommandReq->bodyLength,
22306 &ftmCommandBuffer,
22307 &dataOffset,
22308 &bufferSize);
22309
22310 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22311 ftmCommandReq->FTMCommandBody,
22312 ftmCommandReq->bodyLength);
22313
22314 /* Send MSG */
22315 return WDI_SendMsg(pWDICtx,
22316 ftmCommandBuffer,
22317 bufferSize,
22318 pEventData->pCBfnc,
22319 pEventData->pUserData,
22320 WDI_FTM_CMD_RESP);
22321}
22322
22323/**
22324 @brief WDI_ProcessFTMCommandRsp
22325 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022326
22327 @param pWDICtx: pointer to the WLAN DAL context
22328 pEventData: pointer to the event information structure
22329
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 @see
22331 @return Result of the function call
22332*/
22333WDI_Status
22334WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022335(
Jeff Johnson295189b2012-06-20 16:38:30 -070022336 WDI_ControlBlockType* pWDICtx,
22337 WDI_EventInfoType* pEventData
22338)
22339{
22340 WDI_FTMCommandRspCb ftmCMDRspCb;
22341 tProcessPttRspParams *ftmCMDRspData = NULL;
22342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22343
22344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 -------------------------------------------------------------------------*/
22347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22348 ( NULL == pEventData->pEventData))
22349 {
22350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 }
22355
22356 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22357
22358 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22359
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22361 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22363
22364 /*Notify UMAC*/
22365 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22366
Jeff Johnsone7245742012-09-05 17:12:55 -070022367 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022368}
Jeff Johnson295189b2012-06-20 16:38:30 -070022369/**
22370 @brief WDI_ProcessHalDumpCmdReq
22371 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022372
22373 @param pWDICtx: pointer to the WLAN DAL context
22374 pEventData: pointer to the event information structure
22375
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 @see
22377 @return Result of the function call
22378*/
22379WDI_Status
22380WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022381(
Jeff Johnson295189b2012-06-20 16:38:30 -070022382 WDI_ControlBlockType* pWDICtx,
22383 WDI_EventInfoType* pEventData
22384)
22385{
22386 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22387 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22388 wpt_uint16 usDataOffset = 0;
22389 wpt_uint16 usSendSize = 0;
22390 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022391 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022392
22393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022395 -------------------------------------------------------------------------*/
22396 if (( NULL == pEventData ) ||
22397 ( NULL == pEventData->pEventData) ||
22398 ( NULL == pEventData->pCBfnc ))
22399 {
22400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022404 }
22405
22406 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
22407 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
22408
22409 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022411 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070022412 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070022416 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070022418 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070022420
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 /*-----------------------------------------------------------------------
22422 Get message buffer
22423 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
22426 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022428 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
22429 {
22430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022431 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
22433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 }
22436
Jeff Johnsone7245742012-09-05 17:12:55 -070022437 wpalMemoryCopy( pSendBuffer+usDataOffset,
22438 &halDumpCmdReqMsg.dumpCmdReqParams,
22439 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022440
22441 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022443
22444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022445 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022447 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22448 wdiHALDumpCmdRspCb, pEventData->pUserData,
22449 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022450}
22451
22452/**
22453 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 Process hal Dump Command Response from HAL, simply route to HDD
22455
22456 @param pWDICtx: pointer to the WLAN DAL context
22457 pEventData: pointer to the event information structure
22458
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 @see
22460 @return Result of the function call
22461*/
22462WDI_Status
22463WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022464(
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 WDI_ControlBlockType* pWDICtx,
22466 WDI_EventInfoType* pEventData
22467)
22468{
22469 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022470 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22472
22473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 -------------------------------------------------------------------------*/
22476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22477 ( NULL == pEventData->pEventData))
22478 {
22479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022483 }
22484
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022486
22487 /*Initialize the WDI Response structure */
22488 wdiHALDumpCmdRsp.usBufferLen = 0;
22489 wdiHALDumpCmdRsp.pBuffer = NULL;
22490
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022491 wpalMemoryCopy( &halDumpCmdRspParams,
22492 pEventData->pEventData,
22493 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022494
22495 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022496 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022497
22498 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022499 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 {
22501 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022502 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22503 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22504
22505 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22506 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022507 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022509
Jeff Johnson295189b2012-06-20 16:38:30 -070022510 /*Notify UMAC*/
22511 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22512
22513 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22514 {
22515 /* Free the allocated buffer */
22516 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22517 }
22518 return WDI_STATUS_SUCCESS;
22519}
22520
22521/*==========================================================================
22522 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022523
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022525 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022526==========================================================================*/
22527/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022528 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 when it wishes to send up a notification like the ones
22530 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022531
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022533
22534 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 wctsNotifyCBData: the callback data of the user
22537
Jeff Johnson295189b2012-06-20 16:38:30 -070022538 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022539
22540 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022541*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022542void
Jeff Johnson295189b2012-06-20 16:38:30 -070022543WDI_NotifyMsgCTSCB
22544(
Jeff Johnsone7245742012-09-05 17:12:55 -070022545 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 WCTS_NotifyEventType wctsEvent,
22547 void* wctsNotifyCBData
22548)
22549{
Jeff Johnsone7245742012-09-05 17:12:55 -070022550 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22552
22553 if (NULL == pWDICtx )
22554 {
22555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 }
22560
22561 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22562 {
22563 /* callback presumably occurred after close */
22564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022565 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 }
22568
22569 if ( WCTS_EVENT_OPEN == wctsEvent )
22570 {
22571 /*Flag must be set atomically as it is checked from incoming request
22572 functions*/
22573 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022574 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022575
22576 /*Nothing to do - so try to dequeue any pending request that may have
22577 occurred while we were trying to establish this*/
22578 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022579 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022580 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022582 {
22583 /*Flag must be set atomically as it is checked from incoming request
22584 functions*/
22585 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022586 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022587
22588 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 wpalMutexRelease(&pWDICtx->wptMutex);
22591
22592 /*Notify that the Control Channel is closed */
22593 wpalEventSet(&pWDICtx->wctsActionEvent);
22594 }
22595
22596}/*WDI_NotifyMsgCTSCB*/
22597
22598
22599/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022600 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022601 when it wishes to send up a packet received over the
22602 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022603
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022605
22606 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022607 pMsg: the packet
22608 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022609 wctsRxMsgCBData: the callback data of the user
22610
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022612
22613 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022614*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022615void
22616WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022617(
Jeff Johnsone7245742012-09-05 17:12:55 -070022618 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 void* pMsg,
22620 wpt_uint32 uLen,
22621 void* wctsRxMsgCBData
22622)
22623{
Jeff Johnsone7245742012-09-05 17:12:55 -070022624 tHalMsgHeader *pHalMsgHeader;
22625 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22628
22629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 ( uLen < sizeof(tHalMsgHeader)))
22634 {
22635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022638 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022639 }
22640
22641 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22642 {
22643 /* callback presumably occurred after close */
22644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022645 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022646 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022647 }
22648
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 context - so no serialization is necessary here
22651 ! - revisit this assumption */
22652
22653 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22654
22655 if ( uLen != pHalMsgHeader->msgLen )
22656 {
22657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22658 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022659 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022660 wpalWlanReload();
22661
Jeff Johnsone7245742012-09-05 17:12:55 -070022662 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022663 }
22664
22665 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22666
22667 /*The message itself starts after the header*/
22668 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22669 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22670 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22671 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22672
22673
22674 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22675 {
22676 /*Stop the timer as the response was received */
22677 /*!UT - check for potential race conditions between stop and response */
22678 wpalTimerStop(&pWDICtx->wptResponseTimer);
22679 }
22680 /* Check if we receive a response message which is not expected */
22681 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22682 {
22683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22684 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22685 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022686 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022687 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22688 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022689
22690 if (gWDICb.bEnableSSR == false)
22691 {
22692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22693 "SSR is not enabled on WDI timeout");
22694 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22695 return;
22696 }
22697 wpalWcnssResetIntr();
22698 /* if this timer fires, it means Riva did not receive the FIQ */
22699 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22700
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 return;
22702 }
22703
22704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22705 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22706
22707 /*Post response event to the state machine*/
22708 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22709
22710}/*WDI_RXMsgCTSCB*/
22711
22712
22713/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022714 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022715========================================================================*/
22716
22717/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022718 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022719 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022720
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 @param pWDICtx - pointer to the control block
22722
22723 @return Result of the function call
22724*/
22725WPT_INLINE WDI_Status
22726WDI_CleanCB
22727(
22728 WDI_ControlBlockType* pWDICtx
22729)
22730{
22731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22732
22733 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022735
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22738 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22739
22740 WDI_ResetAssocSessions( pWDICtx );
22741
22742 return WDI_STATUS_SUCCESS;
22743}/*WDI_CleanCB*/
22744
22745
22746/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022747 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022748
Jeff Johnsone7245742012-09-05 17:12:55 -070022749
22750 @param pWDICtx: pointer to the WLAN DAL context
22751 pEventData: pointer to the event information structure
22752
Jeff Johnson295189b2012-06-20 16:38:30 -070022753 @see
22754 @return Result of the function call
22755*/
22756WPT_INLINE WDI_Status
22757WDI_ProcessRequest
22758(
22759 WDI_ControlBlockType* pWDICtx,
22760 WDI_EventInfoType* pEventData
22761)
22762{
22763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22764
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 already checked these pointers*/
22767
22768 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22769 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022770 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022772 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022773 WDI_getReqMsgString(pEventData->wdiRequest),
22774 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22775 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22776 }
22777 else
22778 {
22779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022780 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022781 pEventData->wdiRequest);
22782 return WDI_STATUS_E_NOT_IMPLEMENT;
22783 }
22784}/*WDI_ProcessRequest*/
22785
22786
22787/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022788 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022790 prefixes it with a send message header
22791
22792 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 wdiReqType: type of the request being sent
22794 uBufferLen: message buffer len
22795 pMsgBuffer: resulting allocated buffer
22796 pusDataOffset: offset in the buffer where the caller
22797 can start copying its message data
22798 puBufferSize: the resulting buffer size (offset+buff
22799 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022800
Jeff Johnson295189b2012-06-20 16:38:30 -070022801 @see
22802 @return Result of the function call
22803*/
22804WDI_Status
22805WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022806(
22807 WDI_ControlBlockType* pWDICtx,
22808 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 wpt_uint8** pMsgBuffer,
22811 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 wpt_uint16* pusBufferSize
22813)
22814{
22815 tHalMsgHeader halMsgHeader;
22816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22817
Jeff Johnsone7245742012-09-05 17:12:55 -070022818 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022819 again*/
22820
22821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022822 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022823 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022824 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22826 if ( NULL == *pMsgBuffer )
22827 {
22828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22829 "Unable to allocate message buffer for req %s (%d)",
22830 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022831 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022833 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022834 }
22835
22836 /*-------------------------------------------------------------------------
22837 Fill in the message header
22838 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022839 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22840 /* Fill msgVersion */
22841#ifdef WLAN_FEATURE_11AC
22842 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022843 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 else
22845#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022846 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022847
Jeff Johnsone7245742012-09-05 17:12:55 -070022848 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22849 *pusDataOffset = sizeof(halMsgHeader);
Kapil Guptab3a981b2016-06-26 13:36:51 +053022850
Jeff Johnsone7245742012-09-05 17:12:55 -070022851 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22852
22853 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022854}/*WDI_GetMessageBuffer*/
22855
22856
22857/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022858 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022859 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 the CB
22861
22862 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022863 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022864
Jeff Johnson295189b2012-06-20 16:38:30 -070022865 usSendSize size of the buffer to be sent
22866 pRspCb: response callback - save in the WDI
22867 CB
22868 pUserData: user data associated with the
22869 callback
22870 wdiExpectedResponse: the code of the response that is
22871 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022872
Jeff Johnson295189b2012-06-20 16:38:30 -070022873 @see
22874 @return Result of the function call
22875*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022876WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022877WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022878(
22879 WDI_ControlBlockType* pWDICtx,
22880 wpt_uint8* pSendBuffer,
22881 wpt_uint32 usSendSize,
22882 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022883 void* pUserData,
22884 WDI_ResponseEnumType wdiExpectedResponse
22885)
22886{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022887 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022888 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22890
22891 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022892 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022893 ------------------------------------------------------------------------*/
22894 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022895 pWDICtx->pfncRspCB = pRspCb;
22896 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022897
22898 /*-----------------------------------------------------------------------
22899 Call the CTS to send this message over - free message afterwards
22900 - notify transport failure
22901 Note: CTS is reponsible for freeing the message buffer.
22902 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022903 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22904 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22905 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022908 "Failed to send message with expected response %s (%d)"
22909 " over the bus - catastrophic failure",
22910 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22911 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022912
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022913 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22914 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022915 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022916 else
22917 {
22918 /* even when message was placed in CTS deferred Q, we will treat it
22919 success but log this info
22920 */
22921 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22922 {
22923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22924 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22925 "response %s (%d)",
22926 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22927 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022928 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022929 }
22930 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022931
Jeff Johnsond13512a2012-07-17 11:42:19 -070022932 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 if ( NULL != pWDICtx->wdiReqStatusCB )
22934 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022935 /*Inform originator whether request went through or not*/
22936 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22937 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 pWDICtx->wdiReqStatusCB = NULL;
22939 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022940 callback(wdiStatus, callbackContext);
22941
22942 /*For WDI requests which have registered a request callback,
22943 inform the WDA caller of the same via setting the return value
22944 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22945 end up repeating the functonality in the req callback for the
22946 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022947 if (wdiStatus != WDI_STATUS_SUCCESS)
22948 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022949 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022950 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022951 }
22952
Jeff Johnsond13512a2012-07-17 11:42:19 -070022953 if ( wdiStatus == WDI_STATUS_SUCCESS )
22954 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022955 /*Start timer for the expected response */
22956 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022957
22958 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022959 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022960 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022961 }
22962 else
22963 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022964 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022965 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22966 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022967
Jeff Johnsond13512a2012-07-17 11:42:19 -070022968 return wdiStatus;
22969
Jeff Johnson295189b2012-06-20 16:38:30 -070022970}/*WDI_SendMsg*/
22971
22972
22973
22974/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022975 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022976 the bus using the control transport and saves some info
22977 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022978
22979 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 pSendBuffer: buffer to be sent
22981 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022982
Jeff Johnson295189b2012-06-20 16:38:30 -070022983 @see
22984 @return Result of the function call
22985*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022986WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022987WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022988(
22989 WDI_ControlBlockType* pWDICtx,
22990 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022991 wpt_uint32 usSendSize
22992)
22993{
22994 wpt_uint32 uStatus ;
22995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22996
22997 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022998 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022999 Note: CTS is reponsible for freeing the message buffer.
23000 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023001 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070023002 (void*)pSendBuffer, usSendSize );
23003
23004 /*Inform Upper MAC about the outcome of the request*/
23005 if ( NULL != pWDICtx->wdiReqStatusCB )
23006 {
23007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23008 "Send indication status : %d", uStatus);
23009
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023010 /* even if CTS placed indication into its deferred Q, we treat it
23011 * as success and let CTS drain its queue as per smd interrupt to CTS
23012 */
23013 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 -070023014 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 }
23016
23017 /*If sending of the message failed - it is considered catastrophic and
23018 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023019 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
23020 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
23021
Jeff Johnson295189b2012-06-20 16:38:30 -070023022 {
23023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023024 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070023025
23026 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
23027 return WDI_STATUS_E_FAILURE;
23028 }
23029
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023031}/*WDI_SendIndication*/
23032
23033
23034/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 @brief WDI_DetectedDeviceError - called internally by DAL when
23036 it has detected a failure in the device
23037
23038 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023039 usErrorCode: error code detected by WDI or received
23040 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023041
Jeff Johnson295189b2012-06-20 16:38:30 -070023042 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023043 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023044*/
23045void
23046WDI_DetectedDeviceError
23047(
23048 WDI_ControlBlockType* pWDICtx,
23049 wpt_uint16 usErrorCode
23050)
23051{
23052 WDI_LowLevelIndType wdiInd;
23053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23054
23055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23056 "Device Error detected code: %d - transitioning to stopped state",
23057 usErrorCode);
23058
Katya Nigamf02ad012014-05-05 16:12:49 +053023059 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
23060
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 wpalMutexAcquire(&pWDICtx->wptMutex);
23062
23063 WDI_STATableStop(pWDICtx);
23064
23065 WDI_ResetAssocSessions(pWDICtx);
23066
23067 /*Set the expected state transition to stopped - because the device
23068 experienced a failure*/
23069 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
23070
23071 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070023073
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070023075
23076 /*TO DO: - there should be an attempt to reset the device here*/
23077
23078 wpalMutexRelease(&pWDICtx->wptMutex);
23079
23080 /*------------------------------------------------------------------------
23081 Notify UMAC if a handler is registered
23082 ------------------------------------------------------------------------*/
23083 if (pWDICtx->wdiLowLevelIndCB)
23084 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023085 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
23086 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023087
23088 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
23089 }
23090}/*WDI_DetectedDeviceError*/
23091
23092/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 we started on send message has expire - this should
23095 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070023096 reply - trigger catastrophic failure
23097 @param
23098
Jeff Johnson295189b2012-06-20 16:38:30 -070023099 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070023100
23101 @see
23102 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023103*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023104void
Jeff Johnson295189b2012-06-20 16:38:30 -070023105WDI_ResponseTimerCB
23106(
23107 void *pUserData
23108)
23109{
23110 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
23111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23112
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023113 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070023114 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023118 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023119 }
23120
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023121 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080023122 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080023123 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023124
23125 /* If response timer is running at this time that means this timer
23126 * event is not for the last request but rather last-to-last request and
23127 * this timer event has come after we recevied respone for last-to-last
23128 * message
23129 */
23130 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
23131 {
23132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23133 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023134 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023135 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23137 "uArchTimeStampTmrStart: %llu seconds, "
23138 "uArchTimeStampTmrExp: %llu seconds",
23139 pWDICtx->uArchTimeStampRspTmrStart,
23140 pWDICtx->uArchTimeStampRspTmrExp);
23141
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023142 return;
23143 }
23144
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023145 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 {
23147
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070023149 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023150 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070023151 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023152 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23153 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23155 "uArchTimeStampTmrStart: %llu seconds, "
23156 "uArchTimeStampTmrExp: %llu seconds",
23157 pWDICtx->uArchTimeStampRspTmrStart,
23158 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023159
23160 /* WDI timeout means Riva is not responding or SMD communication to Riva
23161 * is not happening. The only possible way to recover from this error
23162 * is to initiate SSR from APPS.
23163 * There is also an option to re-enable wifi, which will eventually
23164 * trigger SSR
23165 */
23166 if (gWDICb.bEnableSSR == false)
23167 {
23168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23169 "SSR is not enabled on WDI timeout");
23170 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23171 return;
23172 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023173#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023174 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053023175 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053023176 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053023177 if(wpalIsSsrPanicOnFailure())
23178 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053023179 } else {
23180 /* if this timer fires, it means Riva did not receive the FIQ */
23181 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053023182 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023183#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023184 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23185 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023186#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 }
23188 else
23189 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023191 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023192 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023193 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23194 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23196 "uArchTimeStampTmrStart: %llu seconds, "
23197 "uArchTimeStampTmrExp: %llu seconds",
23198 pWDICtx->uArchTimeStampRspTmrStart,
23199 pWDICtx->uArchTimeStampRspTmrExp);
23200
Jeff Johnson295189b2012-06-20 16:38:30 -070023201 }
23202
23203 return;
23204
23205}/*WDI_ResponseTimerCB*/
23206
23207
23208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023210
Jeff Johnsone7245742012-09-05 17:12:55 -070023211
23212 @param pWDICtx: pointer to the WLAN DAL context
23213 pEventData: pointer to the event information structure
23214
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 @see
23216 @return Result of the function call
23217*/
23218WPT_INLINE WDI_Status
23219WDI_ProcessResponse
23220(
23221 WDI_ControlBlockType* pWDICtx,
23222 WDI_EventInfoType* pEventData
23223)
23224{
23225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23226
Jeff Johnsone7245742012-09-05 17:12:55 -070023227 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 already checked these pointers
23229 ! - revisit this assumption */
23230 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23231 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023232 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023234 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 WDI_getRespMsgString(pEventData->wdiResponse),
23236 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23237 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23238 }
23239 else
23240 {
23241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023242 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 pEventData->wdiResponse);
23244 return WDI_STATUS_E_NOT_IMPLEMENT;
23245 }
23246}/*WDI_ProcessResponse*/
23247
23248
23249/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023251=========================================================================*/
23252
23253/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023254 @brief Utility function used by the DAL Core to help queue a
23255 request that cannot be processed right away.
23256 @param
23257
Jeff Johnson295189b2012-06-20 16:38:30 -070023258 pWDICtx: - pointer to the WDI control block
23259 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 queued
23261
23262 @see
23263 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023264*/
23265WDI_Status
23266WDI_QueuePendingReq
23267(
23268 WDI_ControlBlockType* pWDICtx,
23269 WDI_EventInfoType* pEventData
23270)
23271{
Jeff Johnsone7245742012-09-05 17:12:55 -070023272 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023273 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023274 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23276
23277 if ( NULL == pEventDataQueue )
23278 {
23279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 WDI_ASSERT(0);
23282 return WDI_STATUS_MEM_FAILURE;
23283 }
23284
23285 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23286 pEventDataQueue->pUserData = pEventData->pUserData;
23287 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23288 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023289 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023290
23291 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23292 {
23293 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023294
Jeff Johnson295189b2012-06-20 16:38:30 -070023295 if ( NULL == pEventInfo )
23296 {
23297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 WDI_ASSERT(0);
23300 wpalMemoryFree(pEventDataQueue);
23301 return WDI_STATUS_MEM_FAILURE;
23302 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023303
Jeff Johnson295189b2012-06-20 16:38:30 -070023304 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23305
23306 }
23307 pEventDataQueue->pEventData = pEventInfo;
23308
23309 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023311
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023312 if (eWLAN_PAL_STATUS_E_FAILURE ==
23313 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23314 {
23315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23316 "pEventDataQueue wpal_list_insert_back failed");
23317 WDI_ASSERT(0);
23318 wpalMemoryFree(pEventDataQueue);
23319 wpalMemoryFree(pEventInfo);
23320 return WDI_STATUS_MEM_FAILURE;
23321 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023322
23323 return WDI_STATUS_SUCCESS;
23324}/*WDI_QueuePendingReq*/
23325
23326/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023327 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023328 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023329 @param
23330
23331 pMsg - pointer to the message
23332
23333 @see
23334 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023335*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023336void
Jeff Johnson295189b2012-06-20 16:38:30 -070023337WDI_PALCtrlMsgCB
23338(
23339 wpt_msg *pMsg
23340)
23341{
23342 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023343 WDI_ControlBlockType* pWDICtx = NULL;
23344 WDI_Status wdiStatus;
23345 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023346 void* pUserData;
23347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23348
23349 if (( NULL == pMsg )||
23350 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23351 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23352 {
23353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023354 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023356 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023357 }
23358
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023359 /*Access to the global state must be locked */
23360 wpalMutexAcquire(&pWDICtx->wptMutex);
23361
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 /*Transition back to the state that we had before serialization
23363 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023364 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023366 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023367
23368 /*-----------------------------------------------------------------------
23369 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023371 -----------------------------------------------------------------------*/
23372 switch ( pEventData->wdiRequest )
23373 {
23374
Jeff Johnsone7245742012-09-05 17:12:55 -070023375 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23377 break;
23378
Jeff Johnson295189b2012-06-20 16:38:30 -070023379 case WDI_NV_DOWNLOAD_REQ:
23380 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23381 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23382 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23383 {
23384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023385 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23387 }
23388 else
23389 {
23390 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23391 }
23392
23393 break;
23394
23395 default:
23396 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23397 break;
23398 }/*switch ( pEventData->wdiRequest )*/
23399
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053023400 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053023401 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070023402 {
23403 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
23404
23405 if ( NULL != pfnReqStatusCB )
23406 {
23407 /*Fail the request*/
23408 pfnReqStatusCB( wdiStatus, pUserData);
23409 }
23410 }
23411
23412 /* Free data - that was allocated when queueing*/
23413 if( pEventData != NULL )
23414 {
23415 if( pEventData->pEventData != NULL )
23416 {
23417 wpalMemoryFree(pEventData->pEventData);
23418 }
23419 wpalMemoryFree(pEventData);
23420 }
23421
23422 if( pMsg != NULL )
23423 {
23424 wpalMemoryFree(pMsg);
23425 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023426
Jeff Johnson295189b2012-06-20 16:38:30 -070023427}/*WDI_PALCtrlMsgCB*/
23428
23429/**
23430 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070023431 and schedule for execution a pending request
23432 @param
23433
Jeff Johnson295189b2012-06-20 16:38:30 -070023434 pWDICtx: - pointer to the WDI control block
23435 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 queued
23437
23438 @see
23439 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023440*/
23441WDI_Status
23442WDI_DequeuePendingReq
23443(
23444 WDI_ControlBlockType* pWDICtx
23445)
23446{
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23451
Jeff Johnsone7245742012-09-05 17:12:55 -070023452 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023453
23454 if ( NULL == pNode )
23455 {
23456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 return WDI_STATUS_SUCCESS;
23459 }
23460
23461 /*The node actually points to the 1st element inside the Event Data struct -
23462 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023463 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023464
23465 /*Serialize processing in the control thread
23466 !TO DO: - check to see if these are all the messages params that need
23467 to be filled in*/
23468 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23469
23470 if ( NULL == palMsg )
23471 {
23472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023473 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023477 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023478 palMsg->callback = WDI_PALCtrlMsgCB;
23479 palMsg->ptr = pEventData;
23480
23481 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023482 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023483 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023484
Jeff Johnson295189b2012-06-20 16:38:30 -070023485 /*Transition back to BUSY as we need to handle a queued request*/
23486 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023487
Jeff Johnson295189b2012-06-20 16:38:30 -070023488 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23489
23490 return WDI_STATUS_PENDING;
23491}/*WDI_DequeuePendingReq*/
23492
23493
23494/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 away.- The assoc requests will be queued by BSSID
23498 @param
23499
Jeff Johnson295189b2012-06-20 16:38:30 -070023500 pWDICtx: - pointer to the WDI control block
23501 pEventData: pointer to the evnt info that needs to be queued
23502 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023503
23504 @see
23505 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023506*/
23507WDI_Status
23508WDI_QueueNewAssocRequest
23509(
23510 WDI_ControlBlockType* pWDICtx,
23511 WDI_EventInfoType* pEventData,
23512 wpt_macAddr macBSSID
23513)
23514{
Jeff Johnsone7245742012-09-05 17:12:55 -070023515 wpt_uint8 i;
23516 WDI_BSSSessionType* pSession = NULL;
23517 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023518 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023519 void* pEventInfo;
23520 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023522
Jeff Johnsone7245742012-09-05 17:12:55 -070023523
23524 /*------------------------------------------------------------------------
23525 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 ------------------------------------------------------------------------*/
23527 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23528 {
23529 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23530 {
23531 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023532 pSession = &pWDICtx->aBSSSessions[i];
23533 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023534 }
23535 }
23536
23537 if ( i >= WDI_MAX_BSS_SESSIONS )
23538 {
23539 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023541 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023542
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 /*------------------------------------------------------------------------
23544 Fill in the BSSID for this session and set the usage flag
23545 ------------------------------------------------------------------------*/
23546 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023548
23549 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023550 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023551 ------------------------------------------------------------------------*/
23552 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23553 if ( NULL == pEventDataQueue )
23554 {
23555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023556 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023557 WDI_ASSERT(0);
23558 return WDI_STATUS_MEM_FAILURE;
23559 }
23560
23561 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23562 if ( NULL == pSessionIdElement )
23563 {
23564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023565 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023566 WDI_ASSERT(0);
23567 wpalMemoryFree(pEventDataQueue);
23568 return WDI_STATUS_MEM_FAILURE;
23569 }
23570
23571 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23572 if ( NULL == pEventInfo )
23573 {
23574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023575 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 WDI_ASSERT(0);
23577 wpalMemoryFree(pSessionIdElement);
23578 wpalMemoryFree(pEventDataQueue);
23579 return WDI_STATUS_MEM_FAILURE;
23580 }
23581
23582 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23583 pEventDataQueue->pUserData = pEventData->pUserData;
23584 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23585 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023587
23588 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23589 pEventDataQueue->pEventData = pEventInfo;
23590
23591 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023592 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023593
23594 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023595 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023596
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023597 if (eWLAN_PAL_STATUS_E_FAILURE ==
23598 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23599 {
23600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23601 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23602 WDI_ASSERT(0);
23603 wpalMemoryFree(pSessionIdElement);
23604 wpalMemoryFree(pEventDataQueue);
23605 wpalMemoryFree(pEventInfo);
23606 return WDI_STATUS_MEM_FAILURE;
23607 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023608
23609 /*We need to maintain a separate list that keeps track of the order in which
23610 the new assoc requests are being queued such that we can start processing
23611 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023612 pSessionIdElement->ucIndex = i;
23613 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023614
23615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23616 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023617 if (eWLAN_PAL_STATUS_E_FAILURE ==
23618 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23619 {
23620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23621 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23622 WDI_ASSERT(0);
23623 wpalMemoryFree(pSessionIdElement);
23624 wpalMemoryFree(pEventDataQueue);
23625 wpalMemoryFree(pEventInfo);
23626 return WDI_STATUS_MEM_FAILURE;
23627 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023628
23629 /*Return pending as this is what the status of the request is since it has
23630 been queued*/
23631 return WDI_STATUS_PENDING;
23632}/*WDI_QueueNewAssocRequest*/
23633
23634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023635 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023636 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023637 away.- The assoc requests will be queued by BSSID
23638 @param
23639
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 pWDICtx: - pointer to the WDI control block
23641 pSession: - session in which to queue
23642 pEventData: pointer to the event info that needs to be
23643 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023644
23645 @see
23646 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023647*/
23648WDI_Status
23649WDI_QueueAssocRequest
23650(
23651 WDI_ControlBlockType* pWDICtx,
23652 WDI_BSSSessionType* pSession,
23653 WDI_EventInfoType* pEventData
23654)
23655{
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023658 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023660
23661 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023662 Sanity check
23663 ------------------------------------------------------------------------*/
23664 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23665 {
23666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023667 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023668
Jeff Johnsone7245742012-09-05 17:12:55 -070023669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023670 }
23671
23672 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023673 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023674 ------------------------------------------------------------------------*/
23675 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23676 if ( NULL == pEventDataQueue )
23677 {
23678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023679 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023680 WDI_ASSERT(0);
23681 return WDI_STATUS_MEM_FAILURE;
23682 }
23683
23684 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23685 if ( NULL == pEventInfo )
23686 {
23687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23688 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023689 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023690 WDI_ASSERT(0);
23691 wpalMemoryFree(pEventDataQueue);
23692 return WDI_STATUS_MEM_FAILURE;
23693 }
23694
23695 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23696 pEventDataQueue->pUserData = pEventData->pUserData;
23697 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23698 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023699 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023700 pEventDataQueue->pEventData = pEventInfo;
23701
23702 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23703
23704 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023705 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023706
23707 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023708 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023709
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023710 if (eWLAN_PAL_STATUS_E_FAILURE ==
23711 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23712 {
23713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23714 "%s: Cannot allocate memory for queueing event data info",
23715 __func__);
23716 WDI_ASSERT(0);
23717 wpalMemoryFree(pEventDataQueue);
23718 wpalMemoryFree(pEventInfo);
23719 return WDI_STATUS_MEM_FAILURE;
23720 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023721
23722 /*The result of this operation is pending because the request has been
23723 queued and it will be processed at a later moment in time */
23724 return WDI_STATUS_PENDING;
23725}/*WDI_QueueAssocRequest*/
23726
23727/**
23728 @brief Utility function used by the DAL Core to help dequeue
23729 an association request that was pending
23730 The request will be queued up in front of the main
23731 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 @param
23733
Jeff Johnson295189b2012-06-20 16:38:30 -070023734 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023735
23736
23737 @see
23738 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023739*/
23740WDI_Status
23741WDI_DequeueAssocRequest
23742(
23743 WDI_ControlBlockType* pWDICtx
23744)
23745{
Jeff Johnsone7245742012-09-05 17:12:55 -070023746 wpt_list_node* pNode = NULL;
23747 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023748 WDI_BSSSessionType* pSession;
23749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023750
23751 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023752 Sanity check
23753 ------------------------------------------------------------------------*/
23754 if ( NULL == pWDICtx )
23755 {
23756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023758
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 }
23761
23762 /*------------------------------------------------------------------------
23763 An association has been completed => a new association can occur
23764 Check to see if there are any pending associations ->
23765 If so , transfer all the pending requests into the busy queue for
23766 processing
23767 These requests have arrived prior to the requests in the busy queue
23768 (bc they needed to be processed in order to be placed in this queue)
23769 => they will be placed at the front of the busy queue
23770 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023772
23773 if ( NULL == pNode )
23774 {
23775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023776 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023777 return WDI_STATUS_SUCCESS;
23778 }
23779
23780 /*The node actually points to the 1st element inside the Session Id struct -
23781 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023782 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023783
23784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23785 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23786
23787 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23788 {
23789 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023790
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 the front of the main waiting queue for subsequent execution*/
23793 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023794 while ( NULL != pNode )
23795 {
23796 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023797 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23798 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023800 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023801 }
23802 else
23803 {
23804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023805 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023806 WPAL_ASSERT(0);
23807 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023810
Jeff Johnson295189b2012-06-20 16:38:30 -070023811 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23812 wpalMemoryFree(pSessionIdElement);
23813 return WDI_STATUS_SUCCESS;
23814}/*WDI_DequeueAssocRequest*/
23815
23816/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023817 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023818 pending requests - all req cb will be called with
23819 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 @param
23821
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023823
23824 @see
23825 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023826*/
23827WDI_Status
23828WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023829(
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 WDI_ControlBlockType* pWDICtx
23831)
23832{
Jeff Johnsone7245742012-09-05 17:12:55 -070023833 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023835 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023836 void* pUserData;
23837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23838
Jeff Johnsone7245742012-09-05 17:12:55 -070023839 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023840
23841 /*------------------------------------------------------------------------
23842 Go through all the requests and fail them - this will only be called
23843 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023845 ------------------------------------------------------------------------*/
23846 while( pNode )
23847 {
23848 /*The node actually points to the 1st element inside the Event Data struct -
23849 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 pEventDataQueue = (WDI_EventInfoType*)pNode;
23851
Jeff Johnson295189b2012-06-20 16:38:30 -070023852 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23853 if ( NULL != pfnReqStatusCB )
23854 {
23855 /*Fail the request*/
23856 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23857 }
23858 /* Free data - that was allocated when queueing */
23859 if ( pEventDataQueue->pEventData != NULL )
23860 {
23861 wpalMemoryFree(pEventDataQueue->pEventData);
23862 }
23863 wpalMemoryFree(pEventDataQueue);
23864
23865 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23866 {
23867 break;
23868 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023869 }
23870
Jeff Johnson295189b2012-06-20 16:38:30 -070023871 return WDI_STATUS_SUCCESS;
23872}/*WDI_ClearPendingRequests*/
23873
23874/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023875 @brief Helper routine used to init the BSS Sessions in the WDI control block
23876
23877
23878 @param pWDICtx: pointer to the WLAN DAL context
23879
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 @see
23881*/
23882void
23883WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023884(
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 WDI_ControlBlockType* pWDICtx
23886)
23887{
Jeff Johnsone7245742012-09-05 17:12:55 -070023888 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23890
23891 /*-------------------------------------------------------------------------
23892 No Sanity check
23893 -------------------------------------------------------------------------*/
23894 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23895 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023897 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23898 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23899 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23900 }
23901}/*WDI_ResetAssocSessions*/
23902
23903/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 @brief Helper routine used to find a session based on the BSSID
23905
23906
23907 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023909 pSession: pointer to the session (if found)
23910
Jeff Johnson295189b2012-06-20 16:38:30 -070023911 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023912 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023913*/
23914wpt_uint8
23915WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023916(
Jeff Johnson295189b2012-06-20 16:38:30 -070023917 WDI_ControlBlockType* pWDICtx,
23918 wpt_macAddr macBSSID,
23919 WDI_BSSSessionType** ppSession
23920)
23921{
Jeff Johnsone7245742012-09-05 17:12:55 -070023922 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23924
23925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023926 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 -------------------------------------------------------------------------*/
23928 if ( NULL == ppSession )
23929 {
23930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023931 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023932 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023933 }
23934
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023936
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 /*------------------------------------------------------------------------
23938 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 ------------------------------------------------------------------------*/
23940 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23941 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023942 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23943 (eWLAN_PAL_TRUE ==
23944 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23945 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023946 {
23947 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023949 return i;
23950 }
23951 }
23952
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023954}/*WDI_FindAssocSession*/
23955
23956/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023957 @brief Helper routine used to find a session based on the BSSID
23958
23959
23960 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023961 ucBSSIdx: BSS Index of the session
23962 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023963
Jeff Johnson295189b2012-06-20 16:38:30 -070023964 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023965 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023966*/
23967wpt_uint8
23968WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023969(
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 WDI_ControlBlockType* pWDICtx,
23971 wpt_uint16 ucBSSIdx,
23972 WDI_BSSSessionType** ppSession
23973)
23974{
Jeff Johnsone7245742012-09-05 17:12:55 -070023975 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23977
23978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023980 -------------------------------------------------------------------------*/
23981 if ( NULL == ppSession )
23982 {
23983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023984 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023985 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 }
23987
Jeff Johnsone7245742012-09-05 17:12:55 -070023988 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023989
Jeff Johnsone7245742012-09-05 17:12:55 -070023990 /*------------------------------------------------------------------------
23991 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023992 ------------------------------------------------------------------------*/
23993 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23994 {
23995 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23996 {
23997 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 return i;
24000 }
24001 }
24002
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024004}/*WDI_FindAssocSessionByBSSIdx*/
24005
24006/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024007 @brief Helper routine used to find a session based on the BSSID
24008
24009
24010 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 ucBSSIdx: BSS Index of the session
24012 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070024013
Jeff Johnson295189b2012-06-20 16:38:30 -070024014 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024016*/
24017wpt_uint8
24018WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070024019(
Jeff Johnson295189b2012-06-20 16:38:30 -070024020 WDI_ControlBlockType* pWDICtx,
24021 wpt_uint16 usIdx,
24022 WDI_BSSSessionType** ppSession
24023)
24024{
24025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24026
24027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024028 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 -------------------------------------------------------------------------*/
24030 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
24031 {
24032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024033 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024034 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 }
24036
24037 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024038 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070024039
24040 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024041
Jeff Johnson295189b2012-06-20 16:38:30 -070024042}/*WDI_FindAssocSessionByBSSIdx*/
24043
24044/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024045 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070024046 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070024047
24048
24049 @param pWDICtx: pointer to the WLAN DAL context
24050 pSession: pointer to the session (if found)
24051
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024053 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024054*/
24055wpt_uint8
24056WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070024057(
Jeff Johnson295189b2012-06-20 16:38:30 -070024058 WDI_ControlBlockType* pWDICtx,
24059 WDI_BSSSessionType** ppSession
24060)
24061{
Jeff Johnsone7245742012-09-05 17:12:55 -070024062 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024066 -------------------------------------------------------------------------*/
24067 if ( NULL == ppSession )
24068 {
24069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024070 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024071 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024072 }
24073
Jeff Johnsone7245742012-09-05 17:12:55 -070024074 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024075
Jeff Johnsone7245742012-09-05 17:12:55 -070024076 /*------------------------------------------------------------------------
24077 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070024078 ------------------------------------------------------------------------*/
24079 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24080 {
24081 if ( ! pWDICtx->aBSSSessions[i].bInUse )
24082 {
24083 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024084 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070024085 return i;
24086 }
24087 }
24088
Jeff Johnsone7245742012-09-05 17:12:55 -070024089 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024090}/*WDI_FindEmptySession*/
24091
24092
24093/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024094 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070024095 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070024096
24097
24098 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024099 macBSSID: pointer to BSSID. If NULL, get all the session.
24100 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
24101 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
24102 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070024103 @see
24104 @return Number of sessions in use
24105*/
24106wpt_uint8
24107WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070024108(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024109 WDI_ControlBlockType* pWDICtx,
24110 wpt_macAddr macBSSID,
24111 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024112)
24113{
Jeff Johnsone7245742012-09-05 17:12:55 -070024114 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024116
24117 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070024118 Count all sessions in use
24119 ------------------------------------------------------------------------*/
24120 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24121 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024122 if ( macBSSID && skipBSSID &&
24123 (eWLAN_PAL_TRUE ==
24124 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
24125 WDI_MAC_ADDR_LEN)))
24126 {
24127 continue;
24128 }
24129 else if ( pWDICtx->aBSSSessions[i].bInUse )
24130 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024131 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024132 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024133 }
24134
Jeff Johnsone7245742012-09-05 17:12:55 -070024135 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070024136}/*WDI_GetActiveSessionsCount*/
24137
24138/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024139 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070024141
24142
24143 @param pWDICtx: pointer to the WLAN DAL context
24144 pSession: pointer to the session (if found)
24145
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024147 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024148*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024149void
Jeff Johnson295189b2012-06-20 16:38:30 -070024150WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070024151(
Jeff Johnson295189b2012-06-20 16:38:30 -070024152 WDI_ControlBlockType* pWDICtx,
24153 WDI_BSSSessionType* ppSession
24154)
24155{
24156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024158 -------------------------------------------------------------------------*/
24159 if ( NULL == ppSession )
24160 {
24161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024162 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024163 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 }
24165
Jeff Johnsone7245742012-09-05 17:12:55 -070024166 /*------------------------------------------------------------------------
24167 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070024168 ------------------------------------------------------------------------*/
24169 wpal_list_destroy(&ppSession->wptPendingQueue);
24170 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
24172 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
24174 wpal_list_init(&ppSession->wptPendingQueue);
24175
24176}/*WDI_DeleteSession*/
24177
24178/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024179 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070024180 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070024181 @param
24182
Jeff Johnson295189b2012-06-20 16:38:30 -070024183 WDI_AddStaParams: - pointer to the WDI Add STA params
24184 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070024185
24186 @see
24187 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070024188*/
24189void
24190WDI_AddBcastSTAtoSTATable
24191(
24192 WDI_ControlBlockType* pWDICtx,
24193 WDI_AddStaParams * staParams,
24194 wpt_uint16 usBcastStaIdx
24195)
24196{
24197 WDI_AddStaParams wdiAddSTAParam = {0};
24198 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
24199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24200
24201 /*---------------------------------------------------------------------
24202 Sanity check
24203 ---------------------------------------------------------------------*/
24204 if ( NULL == staParams )
24205 {
24206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024208
Jeff Johnsone7245742012-09-05 17:12:55 -070024209 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024210 }
24211
24212 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
24213 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
24214 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24215 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24216 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24217 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24218 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24219 WDI_MAC_ADDR_LEN );
24220 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24221 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24222 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24223 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24224 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24225 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24226 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024227
Jeff Johnson295189b2012-06-20 16:38:30 -070024228 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24229}
24230
24231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024232 @brief NV blob will be divided into fragments of size 4kb and
24233 Sent to HAL
24234
24235 @param pWDICtx: pointer to the WLAN DAL context
24236 pEventData: pointer to the event information structure
24237
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 @see
24239 @return Result of the function call
24240 */
24241
24242WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024243(
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 WDI_ControlBlockType* pWDICtx,
24245 WDI_EventInfoType* pEventData
24246)
24247{
24248
24249 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24250 wpt_uint8* pSendBuffer = NULL;
24251 wpt_uint16 usDataOffset = 0;
24252 wpt_uint16 usSendSize = 0;
24253 wpt_uint16 usCurrentFragmentSize =0;
24254 wpt_uint8* pSrcBuffer = NULL;
24255 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24256 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24257
24258 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24259 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24260 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24261
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24264
24265 /* Update the current Fragment Number */
24266 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24267
24268 /*Update the HAL REQ structure */
24269 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24270 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24271 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24272
24273 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024275 image will be sent to HAL*/
24276
Jeff Johnsone7245742012-09-05 17:12:55 -070024277 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024278 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024281 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24283 usCurrentFragmentSize = FRAGMENT_SIZE;
24284
24285 /*Update the HAL REQ structure */
24286 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24287 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24288
24289 }
24290 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024291 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 usCurrentFragmentSize = FRAGMENT_SIZE;
24293
24294 /*Update the HAL REQ structure */
24295 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24296 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24297 }
24298
24299 /*-----------------------------------------------------------------------
24300 Get message buffer
24301 -----------------------------------------------------------------------*/
24302 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24303 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24304 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24307 {
24308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024309 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024310 pEventData, pwdiNvDownloadReqParams);
24311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 }
24314
24315 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024316 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24318
24319 /* Appending the NV image fragment */
24320 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24321 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24322 usCurrentFragmentSize);
24323
24324 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024325 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024326
Jeff Johnsone7245742012-09-05 17:12:55 -070024327 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24328 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 WDI_NV_DOWNLOAD_RESP);
24330
24331}
Jeff Johnsone7245742012-09-05 17:12:55 -070024332/*============================================================================
24333 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 ============================================================================*/
24335/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024336 @brief Helper routine used to find a session based on the BSSID
24337 @param pContext: pointer to the WLAN DAL context
24338 @param pDPContext: pointer to the Datapath context
24339
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024341 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024342*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024343WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024344WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24345{
24346 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24347
24348 pCB->pDPContext = pDPContext;
24349 return;
24350}
24351
24352/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024353 @brief Helper routine used to find a session based on the BSSID
24354
24355
24356 @param pContext: pointer to the WLAN DAL context
24357
Jeff Johnson295189b2012-06-20 16:38:30 -070024358 @see
24359 @return pointer to Datapath context
24360*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024361WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024362WDI_DS_GetDatapathContext (void *pContext)
24363{
24364 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24365 return pCB->pDPContext;
24366}
24367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024368 @brief Helper routine used to find a session based on the BSSID
24369
24370
24371 @param pContext: pointer to the WLAN DAL context
24372 @param pDTDriverContext: pointer to the Transport Driver context
24373
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 @see
24375 @return void
24376*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024377WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024378WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24379{
24380 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24381
24382 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024383 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024384}
24385
24386/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024387 @brief Helper routine used to find a session based on the BSSID
24388
24389
24390 @param pWDICtx: pointer to the WLAN DAL context
24391
Jeff Johnson295189b2012-06-20 16:38:30 -070024392 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024393 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070024394*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024395WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024396WDT_GetTransportDriverContext (void *pContext)
24397{
24398 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024399 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070024400}
24401
Jeff Johnsone7245742012-09-05 17:12:55 -070024402/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 Helper inline converters
24404 ============================================================================*/
24405/*Convert WDI driver type into HAL driver type*/
24406WPT_STATIC WPT_INLINE WDI_Status
24407WDI_HAL_2_WDI_STATUS
24408(
24409 eHalStatus halStatus
24410)
24411{
Jeff Johnsone7245742012-09-05 17:12:55 -070024412 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 the chances of getting inlined*/
24414 switch( halStatus )
24415 {
24416 case eHAL_STATUS_SUCCESS:
24417 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24418 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24419 return WDI_STATUS_SUCCESS;
24420 case eHAL_STATUS_FAILURE:
24421 return WDI_STATUS_E_FAILURE;
24422 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070024423 return WDI_STATUS_MEM_FAILURE;
24424 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070024425 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024426 default:
24427 return WDI_STATUS_DEV_INTERNAL_FAILURE;
24428 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024429
Jeff Johnsone7245742012-09-05 17:12:55 -070024430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024431}/*WDI_HAL_2_WDI_STATUS*/
24432
24433/*Convert WDI request type into HAL request type*/
24434WPT_STATIC WPT_INLINE tHalHostMsgType
24435WDI_2_HAL_REQ_TYPE
24436(
24437 WDI_RequestEnumType wdiReqType
24438)
24439{
Jeff Johnsone7245742012-09-05 17:12:55 -070024440 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024441 the chances of getting inlined*/
24442 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070024443 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024445 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024449 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024451 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024452 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024453 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024454 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024455 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024456 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024457 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024458 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024459 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024460 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024461 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024462 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024463 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024464 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024465 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024466 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024467 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024468 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024469 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024470 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024471 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024473 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024474 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024475 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024477 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024478 return WLAN_HAL_RMV_STAKEY_REQ;
24479 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024480 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024481 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024482 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024483 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024484 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024485 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024486 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024487 case WDI_DEL_BA_REQ:
24488 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024489#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024490 case WDI_TSM_STATS_REQ:
24491 return WLAN_HAL_TSM_STATS_REQ;
24492#endif
24493 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024494 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024495 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024496 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024497 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024498 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024499 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024500 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024501 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024502 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024503 case WDI_ADD_BA_SESSION_REQ:
24504 return WLAN_HAL_ADD_BA_SESSION_REQ;
24505 case WDI_TRIGGER_BA_REQ:
24506 return WLAN_HAL_TRIGGER_BA_REQ;
24507 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024508 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024509 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024510 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24512 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24513 case WDI_SET_MAX_TX_POWER_REQ:
24514 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024515 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24516 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024517 case WDI_SET_TX_POWER_REQ:
24518 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024519 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24520 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024521#ifdef FEATURE_WLAN_TDLS
24522 case WDI_TDLS_LINK_ESTABLISH_REQ:
24523 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024524 case WDI_TDLS_CHAN_SWITCH_REQ:
24525 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024526#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024527 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024528 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024530 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024532 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024534 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024535 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024536 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024537 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024538 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024539 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024540 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024541 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024542 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024543 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024544 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024545 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024546 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024547 case WDI_REM_BEACON_FILTER_REQ:
24548 return WLAN_HAL_REM_BCN_FILTER_REQ;
24549 case WDI_SET_RSSI_THRESHOLDS_REQ:
24550 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24551 case WDI_HOST_OFFLOAD_REQ:
24552 return WLAN_HAL_HOST_OFFLOAD_REQ;
24553 case WDI_WOWL_ADD_BC_PTRN_REQ:
24554 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24555 case WDI_WOWL_DEL_BC_PTRN_REQ:
24556 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24557 case WDI_WOWL_ENTER_REQ:
24558 return WLAN_HAL_ENTER_WOWL_REQ;
24559 case WDI_WOWL_EXIT_REQ:
24560 return WLAN_HAL_EXIT_WOWL_REQ;
24561 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24562 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24563 case WDI_NV_DOWNLOAD_REQ:
24564 return WLAN_HAL_DOWNLOAD_NV_REQ;
24565 case WDI_FLUSH_AC_REQ:
24566 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24567 case WDI_BTAMP_EVENT_REQ:
24568 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24569#ifdef WLAN_FEATURE_VOWIFI_11R
24570 case WDI_AGGR_ADD_TS_REQ:
24571 return WLAN_HAL_AGGR_ADD_TS_REQ;
24572#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 case WDI_FTM_CMD_REQ:
24574 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024575 case WDI_ADD_STA_SELF_REQ:
24576 return WLAN_HAL_ADD_STA_SELF_REQ;
24577 case WDI_DEL_STA_SELF_REQ:
24578 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024579#ifdef FEATURE_OEM_DATA_SUPPORT
24580 case WDI_START_OEM_DATA_REQ:
24581 return WLAN_HAL_START_OEM_DATA_REQ;
24582#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024583 case WDI_HOST_RESUME_REQ:
24584 return WLAN_HAL_HOST_RESUME_REQ;
24585 case WDI_HOST_SUSPEND_IND:
24586 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024587 case WDI_TRAFFIC_STATS_IND:
24588 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024589#ifdef WLAN_FEATURE_11W
24590 case WDI_EXCLUDE_UNENCRYPTED_IND:
24591 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24592#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024593 case WDI_KEEP_ALIVE_REQ:
24594 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024595#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024596 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24597 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024598#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024599#ifdef FEATURE_WLAN_SCAN_PNO
24600 case WDI_SET_PREF_NETWORK_REQ:
24601 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24602 case WDI_SET_RSSI_FILTER_REQ:
24603 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24604 case WDI_UPDATE_SCAN_PARAMS_REQ:
24605 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24606#endif // FEATURE_WLAN_SCAN_PNO
24607 case WDI_SET_TX_PER_TRACKING_REQ:
24608 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24609#ifdef WLAN_FEATURE_PACKET_FILTERING
24610 case WDI_8023_MULTICAST_LIST_REQ:
24611 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24612 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024613 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024614 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24615 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24616 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24617 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24618#endif // WLAN_FEATURE_PACKET_FILTERING
24619 case WDI_HAL_DUMP_CMD_REQ:
24620 return WLAN_HAL_DUMP_COMMAND_REQ;
24621#ifdef WLAN_FEATURE_GTK_OFFLOAD
24622 case WDI_GTK_OFFLOAD_REQ:
24623 return WLAN_HAL_GTK_OFFLOAD_REQ;
24624 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24625 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24626#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24627
24628 case WDI_INIT_SCAN_CON_REQ:
24629 return WLAN_HAL_INIT_SCAN_CON_REQ;
24630 case WDI_SET_POWER_PARAMS_REQ:
24631 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24632 case WDI_SET_TM_LEVEL_REQ:
24633 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24634 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24635 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024636#ifdef WLAN_FEATURE_11AC
24637 case WDI_UPDATE_VHT_OP_MODE_REQ:
24638 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24639#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024640 case WDI_GET_ROAM_RSSI_REQ:
24641 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024642 case WDI_DHCP_START_IND:
24643 return WLAN_HAL_DHCP_START_IND;
24644 case WDI_DHCP_STOP_IND:
24645 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024646#ifdef FEATURE_WLAN_LPHB
24647 case WDI_LPHB_CFG_REQ:
24648 return WLAN_HAL_LPHB_CFG_REQ;
24649#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024650 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24651 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24652 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24653 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053024654#ifdef WLAN_FEATURE_RMC
24655 case WDI_RMC_RULER_REQ:
24656 return WLAN_HAL_RMC_RULER_REQ;
24657 case WDI_RMC_UPDATE_IND:
24658 return WLAN_HAL_RMC_UPDATE_IND;
24659 case WDI_HAL_IBSS_PEER_INFO_REQ:
24660 return WLAN_HAL_GET_IBSS_PEER_INFO_REQ;
24661#endif /* WLAN_FEATURE_RMC */
24662 case WDI_RATE_UPDATE_IND:
24663 return WLAN_HAL_RATE_UPDATE_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024664
Rajeev79dbe4c2013-10-05 11:03:42 +053024665#ifdef FEATURE_WLAN_BATCH_SCAN
24666 case WDI_SET_BATCH_SCAN_REQ:
24667 return WLAN_HAL_BATCHSCAN_SET_REQ;
24668 case WDI_STOP_BATCH_SCAN_IND:
24669 return WLAN_HAL_BATCHSCAN_STOP_IND;
24670 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24671 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24672#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +053024673
24674#ifdef WLAN_FEATURE_RMC
24675 case WDI_TX_FAIL_MONITOR_IND:
24676 return WLAN_HAL_TX_FAIL_MONITOR_IND;
24677#endif
24678
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024679 case WDI_START_HT40_OBSS_SCAN_IND:
24680 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24681 case WDI_STOP_HT40_OBSS_SCAN_IND:
24682 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024683 case WDI_UPDATE_CHAN_REQ:
24684 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024685 case WDI_CH_SWITCH_REQ_V1:
24686 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024687 case WDI_GET_BCN_MISS_RATE_REQ:
24688 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024689
24690#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24691 case WDI_LL_STATS_SET_REQ:
24692 return WLAN_HAL_LL_SET_STATS_REQ;
24693 case WDI_LL_STATS_GET_REQ:
24694 return WLAN_HAL_LL_GET_STATS_REQ;
24695 case WDI_LL_STATS_CLEAR_REQ:
24696 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24697#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024698#ifdef WLAN_FEATURE_EXTSCAN
24699 case WDI_EXTSCAN_START_REQ:
24700 return WLAN_HAL_EXT_SCAN_START_REQ;
24701 case WDI_EXTSCAN_STOP_REQ:
24702 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24703 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24704 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24705 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24706 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24707 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24708 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24709 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24710 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024711 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24712 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24713 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24714 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053024715 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
24716 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053024717#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024718 case WDI_SPOOF_MAC_ADDR_REQ:
24719 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024720 case WDI_GET_FW_STATS_REQ:
24721 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024722 case WDI_ENCRYPT_MSG_REQ:
24723 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024724 case WDI_FW_LOGGING_INIT_REQ:
24725 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024726 case WDI_GET_FRAME_LOG_REQ:
24727 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024728 case WDI_NAN_REQUEST:
24729 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024730 case WDI_SET_RTS_CTS_HTVHT_IND:
24731 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024732 case WDI_MON_START_REQ:
24733 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24734 case WDI_MON_STOP_REQ:
24735 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024736 case WDI_FW_LOGGING_DXE_DONE_IND:
24737 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024738 case WDI_FATAL_EVENT_LOGGING_REQ:
24739 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024740 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24741 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053024742 case WDI_FWR_MEM_DUMP_REQ:
24743 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024744 case WDI_START_RSSI_MONITOR_REQ:
24745 return WLAN_HAL_START_RSSI_MONITORING_REQ;
24746 case WDI_STOP_RSSI_MONITOR_REQ:
24747 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024748 case WDI_WIFI_CONFIG_SET_REQ:
24749 return WLAN_HAL_WIFI_CONFIG_SET_PARAMS_REQ;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024750 case WDI_START_OEM_DATA_REQ_IND_NEW:
24751 return WLAN_HAL_START_OEM_DATA_REQ_IND_NEW;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053024752 case WDI_ANTENNA_DIVERSITY_SELECTION_REQ:
24753 return WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_REQ;
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053024754 case WDI_MODIFY_ROAM_PARAMS_IND:
24755 return WLAN_HAL_MODIFY_ROAM_PARAMS_IND;
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053024756 case WDI_SET_ALLOWED_ACTION_FRAMES_IND:
24757 return WLAN_HAL_SET_ALLOWED_ACTION_FRAMES_IND;
Kapil Guptab3a981b2016-06-26 13:36:51 +053024758#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24759 case WDI_PER_ROAM_SCAN_OFFLOAD_REQ:
24760 return WLAN_HAL_SET_PER_ROAM_CONFIG_REQ;
24761 case WDI_PER_ROAM_SCAN_TRIGGER_REQ:
24762 return WLAN_HAL_PER_ROAM_SCAN_TRIGGER_REQ;
24763#endif
Agrawal Ashish17ef5082016-10-17 18:33:21 +053024764#ifdef SAP_AUTH_OFFLOAD
24765 case WDI_PROCESS_SAP_AUTH_OFFLOAD_IND:
24766 return WLAN_HAL_SAP_AUTH_OFFLOAD_IND;
24767#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024769 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024770 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024771
Jeff Johnson295189b2012-06-20 16:38:30 -070024772}/*WDI_2_HAL_REQ_TYPE*/
24773
24774/*Convert WDI response type into HAL response type*/
24775WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24776HAL_2_WDI_RSP_TYPE
24777(
24778 tHalHostMsgType halMsg
24779)
24780{
Jeff Johnsone7245742012-09-05 17:12:55 -070024781 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024782 the chances of getting inlined*/
24783 switch( halMsg )
24784 {
24785 case WLAN_HAL_START_RSP:
24786 return WDI_START_RESP;
24787 case WLAN_HAL_STOP_RSP:
24788 return WDI_STOP_RESP;
24789 case WLAN_HAL_INIT_SCAN_RSP:
24790 return WDI_INIT_SCAN_RESP;
24791 case WLAN_HAL_START_SCAN_RSP:
24792 return WDI_START_SCAN_RESP;
24793 case WLAN_HAL_END_SCAN_RSP:
24794 return WDI_END_SCAN_RESP;
24795 case WLAN_HAL_FINISH_SCAN_RSP:
24796 return WDI_FINISH_SCAN_RESP;
24797 case WLAN_HAL_CONFIG_STA_RSP:
24798 return WDI_CONFIG_STA_RESP;
24799 case WLAN_HAL_DELETE_STA_RSP:
24800 return WDI_DEL_STA_RESP;
24801 case WLAN_HAL_CONFIG_BSS_RSP:
24802 return WDI_CONFIG_BSS_RESP;
24803 case WLAN_HAL_DELETE_BSS_RSP:
24804 return WDI_DEL_BSS_RESP;
24805 case WLAN_HAL_JOIN_RSP:
24806 return WDI_JOIN_RESP;
24807 case WLAN_HAL_POST_ASSOC_RSP:
24808 return WDI_POST_ASSOC_RESP;
24809 case WLAN_HAL_SET_BSSKEY_RSP:
24810 return WDI_SET_BSS_KEY_RESP;
24811 case WLAN_HAL_SET_STAKEY_RSP:
24812 return WDI_SET_STA_KEY_RESP;
24813 case WLAN_HAL_RMV_BSSKEY_RSP:
24814 return WDI_RMV_BSS_KEY_RESP;
24815 case WLAN_HAL_RMV_STAKEY_RSP:
24816 return WDI_RMV_STA_KEY_RESP;
24817 case WLAN_HAL_SET_BCASTKEY_RSP:
24818 return WDI_SET_STA_BCAST_KEY_RESP;
24819 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24820 // return WDI_RMV_STA_BCAST_KEY_RESP;
24821 case WLAN_HAL_ADD_TS_RSP:
24822 return WDI_ADD_TS_RESP;
24823 case WLAN_HAL_DEL_TS_RSP:
24824 return WDI_DEL_TS_RESP;
24825 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24826 return WDI_UPD_EDCA_PRMS_RESP;
24827 case WLAN_HAL_ADD_BA_RSP:
24828 return WDI_ADD_BA_RESP;
24829 case WLAN_HAL_DEL_BA_RSP:
24830 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024831#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024832 case WLAN_HAL_TSM_STATS_RSP:
24833 return WDI_TSM_STATS_RESP;
24834#endif
24835 case WLAN_HAL_CH_SWITCH_RSP:
24836 return WDI_CH_SWITCH_RESP;
24837 case WLAN_HAL_SET_LINK_ST_RSP:
24838 return WDI_SET_LINK_ST_RESP;
24839 case WLAN_HAL_GET_STATS_RSP:
24840 return WDI_GET_STATS_RESP;
24841 case WLAN_HAL_UPDATE_CFG_RSP:
24842 return WDI_UPDATE_CFG_RESP;
24843 case WLAN_HAL_ADD_BA_SESSION_RSP:
24844 return WDI_ADD_BA_SESSION_RESP;
24845 case WLAN_HAL_TRIGGER_BA_RSP:
24846 return WDI_TRIGGER_BA_RESP;
24847 case WLAN_HAL_UPDATE_BEACON_RSP:
24848 return WDI_UPD_BCON_PRMS_RESP;
24849 case WLAN_HAL_SEND_BEACON_RSP:
24850 return WDI_SND_BCON_RESP;
24851 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24852 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24853 /*Indications*/
24854 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24855 return WDI_HAL_RSSI_NOTIFICATION_IND;
24856 case WLAN_HAL_MISSED_BEACON_IND:
24857 return WDI_HAL_MISSED_BEACON_IND;
24858 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24859 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24860 case WLAN_HAL_MIC_FAILURE_IND:
24861 return WDI_HAL_MIC_FAILURE_IND;
24862 case WLAN_HAL_FATAL_ERROR_IND:
24863 return WDI_HAL_FATAL_ERROR_IND;
24864 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24865 return WDI_HAL_DEL_STA_IND;
24866 case WLAN_HAL_COEX_IND:
24867 return WDI_HAL_COEX_IND;
24868 case WLAN_HAL_OTA_TX_COMPL_IND:
24869 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024870 case WLAN_HAL_P2P_NOA_ATTR_IND:
24871 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024872 case WLAN_HAL_P2P_NOA_START_IND:
24873 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024874 case WLAN_HAL_DEL_BA_IND:
24875 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024876 case WLAN_HAL_TX_PER_HIT_IND:
24877 return WDI_HAL_TX_PER_HIT_IND;
24878 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24879 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024880 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24881 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024882 case WLAN_HAL_SET_TX_POWER_RSP:
24883 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 case WLAN_HAL_SET_P2P_GONOA_RSP:
24885 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024886#ifdef FEATURE_WLAN_TDLS
24887 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24888 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024889 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24890 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024891 case WLAN_HAL_TDLS_IND:
24892 return WDI_HAL_TDLS_IND;
24893#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024894 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024895 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024896 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024897 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024898 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024899 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024900 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024901 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024902 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024903 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024904 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024905 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024906 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024907 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024908 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024909 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024910 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024911 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024912 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24913 return WDI_SET_BEACON_FILTER_RESP;
24914 case WLAN_HAL_REM_BCN_FILTER_RSP:
24915 return WDI_REM_BEACON_FILTER_RESP;
24916 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24917 return WDI_SET_RSSI_THRESHOLDS_RESP;
24918 case WLAN_HAL_HOST_OFFLOAD_RSP:
24919 return WDI_HOST_OFFLOAD_RESP;
24920 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24921 return WDI_WOWL_ADD_BC_PTRN_RESP;
24922 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24923 return WDI_WOWL_DEL_BC_PTRN_RESP;
24924 case WLAN_HAL_ENTER_WOWL_RSP:
24925 return WDI_WOWL_ENTER_RESP;
24926 case WLAN_HAL_EXIT_WOWL_RSP:
24927 return WDI_WOWL_EXIT_RESP;
24928 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24929 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24930 case WLAN_HAL_DOWNLOAD_NV_RSP:
24931 return WDI_NV_DOWNLOAD_RESP;
24932 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24933 return WDI_FLUSH_AC_RESP;
24934 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24935 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024936 case WLAN_HAL_PROCESS_PTT_RSP:
24937 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024938 case WLAN_HAL_ADD_STA_SELF_RSP:
24939 return WDI_ADD_STA_SELF_RESP;
24940case WLAN_HAL_DEL_STA_SELF_RSP:
24941 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024942#ifdef FEATURE_OEM_DATA_SUPPORT
24943 case WLAN_HAL_START_OEM_DATA_RSP:
24944 return WDI_START_OEM_DATA_RESP;
24945#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024946 case WLAN_HAL_HOST_RESUME_RSP:
24947 return WDI_HOST_RESUME_RESP;
24948 case WLAN_HAL_KEEP_ALIVE_RSP:
24949 return WDI_KEEP_ALIVE_RESP;
24950#ifdef FEATURE_WLAN_SCAN_PNO
24951 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24952 return WDI_SET_PREF_NETWORK_RESP;
24953 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024954 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024955 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24956 return WDI_UPDATE_SCAN_PARAMS_RESP;
24957 case WLAN_HAL_PREF_NETW_FOUND_IND:
24958 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24959#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024960#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024961 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24962 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024963#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024964 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24965 return WDI_SET_TX_PER_TRACKING_RESP;
24966#ifdef WLAN_FEATURE_PACKET_FILTERING
24967 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24968 return WDI_8023_MULTICAST_LIST_RESP;
24969 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24970 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24971 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24972 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24973 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24974 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24975#endif // WLAN_FEATURE_PACKET_FILTERING
24976
24977 case WLAN_HAL_DUMP_COMMAND_RSP:
24978 return WDI_HAL_DUMP_CMD_RESP;
24979 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24980 return WDI_SET_POWER_PARAMS_RESP;
24981#ifdef WLAN_FEATURE_VOWIFI_11R
24982 case WLAN_HAL_AGGR_ADD_TS_RSP:
24983 return WDI_AGGR_ADD_TS_RESP;
24984#endif
24985
24986#ifdef WLAN_FEATURE_GTK_OFFLOAD
24987 case WLAN_HAL_GTK_OFFLOAD_RSP:
24988 return WDI_GTK_OFFLOAD_RESP;
24989 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24990 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24991#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24992#ifdef WLAN_WAKEUP_EVENTS
24993 case WLAN_HAL_WAKE_REASON_IND:
24994 return WDI_HAL_WAKE_REASON_IND;
24995#endif // WLAN_WAKEUP_EVENTS
24996
24997 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24998 return WDI_SET_TM_LEVEL_RESP;
24999 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
25000 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070025001#ifdef WLAN_FEATURE_11AC
25002 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
25003 return WDI_UPDATE_VHT_OP_MODE_RESP;
25004#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025005#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025006 case WLAN_HAL_GET_ROAM_RSSI_RSP:
25007 return WDI_GET_ROAM_RSSI_RESP;
25008#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025009
Leo Chang9056f462013-08-01 19:21:11 -070025010#ifdef FEATURE_WLAN_LPHB
25011 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070025012 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070025013 case WLAN_HAL_LPHB_CFG_RSP:
25014 return WDI_LPHB_CFG_RESP;
25015#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025016
25017 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
25018 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070025019 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
25020 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025021
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025022#ifdef WLAN_FEATURE_RMC
25023 case WLAN_HAL_RMC_RULER_RSP:
25024 return WDI_RMC_RULER_RESP;
25025 case WLAN_HAL_RMC_UPDATE_IND:
25026 return WDI_RMC_UPDATE_IND_TO_HOST;
25027 case WLAN_HAL_GET_IBSS_PEER_INFO_RSP:
25028 return WDI_HAL_IBSS_PEER_INFO_RSP;
25029#endif /* WLAN_FEATURE_RMC */
25030
Rajeev79dbe4c2013-10-05 11:03:42 +053025031#ifdef FEATURE_WLAN_BATCH_SCAN
25032 case WLAN_HAL_BATCHSCAN_SET_RSP:
25033 return WDI_SET_BATCH_SCAN_RESP;
25034 case WLAN_HAL_BATCHSCAN_RESULT_IND:
25035 return WDI_BATCHSCAN_RESULT_IND;
25036#endif // FEATURE_WLAN_BATCH_SCAN
25037
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025038#ifdef WLAN_FEATURE_RMC
25039 case WLAN_HAL_TX_FAIL_IND:
25040 return WDI_HAL_TX_FAIL_IND;
25041#endif /* WLAN_FEATURE_RMC */
25042
Leo Chang0b0e45a2013-12-15 15:18:55 -080025043#ifdef FEATURE_WLAN_CH_AVOID
25044 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
25045 return WDI_HAL_CH_AVOID_IND;
25046#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025047 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
25048 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053025049 case WLAN_HAL_PRINT_REG_INFO_IND:
25050 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053025051 case WLAN_HAL_CH_SWITCH_V1_RSP:
25052 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053025053 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
25054 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053025055#ifdef WLAN_FEATURE_LINK_LAYER_STATS
25056 case WLAN_HAL_LL_SET_STATS_RSP:
25057 return WDI_LL_STATS_SET_RSP;
25058 case WLAN_HAL_LL_GET_STATS_RSP:
25059 return WDI_LL_STATS_GET_RSP;
25060 case WLAN_HAL_LL_CLEAR_STATS_RSP:
25061 return WDI_LL_STATS_CLEAR_RSP;
25062 case WLAN_HAL_LL_NOTIFY_STATS:
25063 return WDI_HAL_LL_STATS_RESULTS_IND;
25064#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053025065#ifdef WLAN_FEATURE_EXTSCAN
25066 case WLAN_HAL_EXT_SCAN_START_RSP:
25067 return WDI_EXTSCAN_START_RSP;
25068 case WLAN_HAL_EXT_SCAN_STOP_RSP:
25069 return WDI_EXTSCAN_STOP_RSP;
25070 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
25071 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
25072 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
25073 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
25074 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
25075 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
25076 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
25077 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053025078 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
25079 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
25080 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
25081 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053025082 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
25083 return WDI_HAL_EXTSCAN_PROGRESS_IND;
25084 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
25085 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
25086 case WLAN_HAL_EXT_SCAN_RESULT_IND:
25087 return WDI_HAL_EXTSCAN_RESULT_IND;
25088 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
25089 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053025090 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
25091 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053025092#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053025093 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
25094 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053025095 case WLAN_HAL_FW_STATS_RSP:
25096 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053025097 case WLAN_HAL_ENCRYPT_DATA_RSP:
25098 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053025099 case WLAN_HAL_FW_LOGGING_INIT_RSP:
25100 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053025101 case WLAN_HAL_GET_FRAME_LOG_RSP:
25102 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053025103 case WLAN_HAL_NAN_RSP:
25104 return WDI_NAN_RESPONSE;
25105 case WLAN_HAL_NAN_EVT:
25106 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053025107 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
25108 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053025109 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
25110 return WDI_MON_START_RSP;
25111 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
25112 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053025113 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
25114 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053025115 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
25116 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053025117 case WLAN_HAL_START_RSSI_MONITORING_RSP:
25118 return WDI_START_RSSI_MONITOR_RSP;
25119 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
25120 return WDI_STOP_RSSI_MONITOR_RSP;
25121 case WLAN_HAL_RSSI_MONITORING_IND:
25122 return WDI_HAL_RSSI_BREACHED_IND;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053025123 case WLAN_HAL_WIFI_CONFIG_SET_PARAMS_RSP:
25124 return WDI_WIFI_CONFIG_SET_RSP;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053025125#ifdef FEATURE_OEM_DATA_SUPPORT
25126 case WLAN_HAL_START_OEM_DATA_RSP_IND_NEW:
25127 return WDI_HAL_START_OEM_DATA_RSP_IND_NEW;
25128#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053025129 case WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_RSP:
25130 return WDI_ANTENNA_DIVERSITY_SELECTION_RSP;
Kapil Guptab3a981b2016-06-26 13:36:51 +053025131#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25132 case WLAN_HAL_SET_PER_ROAM_CONFIG_RSP:
25133 return WDI_PER_ROAM_SCAN_OFFLOAD_RSP;
25134 case WLAN_HAL_PER_ROAM_SCAN_TRIGGER_RSP:
25135 return WDI_PER_ROAM_SCAN_TRIGGER_RSP;
25136#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070025138 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 }
25140
25141}/*HAL_2_WDI_RSP_TYPE*/
25142
25143
25144/*Convert WDI driver type into HAL driver type*/
25145WPT_STATIC WPT_INLINE tDriverType
25146WDI_2_HAL_DRV_TYPE
25147(
25148 WDI_DriverType wdiDriverType
25149)
25150{
Jeff Johnsone7245742012-09-05 17:12:55 -070025151 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025152 the chances of getting inlined*/
25153 switch( wdiDriverType )
25154 {
25155 case WDI_DRIVER_TYPE_PRODUCTION:
25156 return eDRIVER_TYPE_PRODUCTION;
25157 case WDI_DRIVER_TYPE_MFG:
25158 return eDRIVER_TYPE_MFG;
25159 case WDI_DRIVER_TYPE_DVT:
25160 return eDRIVER_TYPE_DVT;
25161 }
25162
Jeff Johnsone7245742012-09-05 17:12:55 -070025163 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025164}/*WDI_2_HAL_DRV_TYPE*/
25165
25166
25167/*Convert WDI stop reason into HAL stop reason*/
25168WPT_STATIC WPT_INLINE tHalStopType
25169WDI_2_HAL_STOP_REASON
25170(
25171 WDI_StopType wdiDriverType
25172)
25173{
Jeff Johnsone7245742012-09-05 17:12:55 -070025174 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025175 the chances of getting inlined*/
25176 switch( wdiDriverType )
25177 {
25178 case WDI_STOP_TYPE_SYS_RESET:
25179 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070025180 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
25181 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025182 case WDI_STOP_TYPE_RF_KILL:
25183 return HAL_STOP_TYPE_RF_KILL;
25184 }
25185
Jeff Johnsone7245742012-09-05 17:12:55 -070025186 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025187}/*WDI_2_HAL_STOP_REASON*/
25188
25189
25190/*Convert WDI scan mode type into HAL scan mode type*/
25191WPT_STATIC WPT_INLINE eHalSysMode
25192WDI_2_HAL_SCAN_MODE
25193(
25194 WDI_ScanMode wdiScanMode
25195)
25196{
Jeff Johnsone7245742012-09-05 17:12:55 -070025197 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025198 the chances of getting inlined*/
25199 switch( wdiScanMode )
25200 {
25201 case WDI_SCAN_MODE_NORMAL:
25202 return eHAL_SYS_MODE_NORMAL;
25203 case WDI_SCAN_MODE_LEARN:
25204 return eHAL_SYS_MODE_LEARN;
25205 case WDI_SCAN_MODE_SCAN:
25206 return eHAL_SYS_MODE_SCAN;
25207 case WDI_SCAN_MODE_PROMISC:
25208 return eHAL_SYS_MODE_PROMISC;
25209 case WDI_SCAN_MODE_SUSPEND_LINK:
25210 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070025211 case WDI_SCAN_MODE_ROAM_SCAN:
25212 return eHAL_SYS_MODE_ROAM_SCAN;
25213 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
25214 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070025215 }
25216
Jeff Johnsone7245742012-09-05 17:12:55 -070025217 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025218}/*WDI_2_HAL_SCAN_MODE*/
25219
25220/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025221WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070025222WDI_2_HAL_SEC_CH_OFFSET
25223(
25224 WDI_HTSecondaryChannelOffset wdiSecChOffset
25225)
25226{
Jeff Johnsone7245742012-09-05 17:12:55 -070025227 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025228 the chances of getting inlined*/
25229 switch( wdiSecChOffset )
25230 {
25231 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025232 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025233 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025234 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070025235 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070025236 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
25237#ifdef WLAN_FEATURE_11AC
25238 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25239 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25240 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25241 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25242 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25243 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25244 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25245 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25246 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25247 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25248 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25249 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25250 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25251 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25252#endif
25253 default:
25254 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025255 }
25256
Jeff Johnsone7245742012-09-05 17:12:55 -070025257 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025258}/*WDI_2_HAL_SEC_CH_OFFSET*/
25259
25260/*Convert WDI BSS type into HAL BSS type*/
25261WPT_STATIC WPT_INLINE tSirBssType
25262WDI_2_HAL_BSS_TYPE
25263(
25264 WDI_BssType wdiBSSType
25265)
25266{
Jeff Johnsone7245742012-09-05 17:12:55 -070025267 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025268 the chances of getting inlined*/
25269 switch( wdiBSSType )
25270 {
25271 case WDI_INFRASTRUCTURE_MODE:
25272 return eSIR_INFRASTRUCTURE_MODE;
25273 case WDI_INFRA_AP_MODE:
25274 return eSIR_INFRA_AP_MODE;
25275 case WDI_IBSS_MODE:
25276 return eSIR_IBSS_MODE;
25277 case WDI_BTAMP_STA_MODE:
25278 return eSIR_BTAMP_STA_MODE;
25279 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025280 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025281 case WDI_BSS_AUTO_MODE:
25282 return eSIR_AUTO_MODE;
25283 }
25284
Jeff Johnsone7245742012-09-05 17:12:55 -070025285 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025286}/*WDI_2_HAL_BSS_TYPE*/
25287
25288/*Convert WDI NW type into HAL NW type*/
25289WPT_STATIC WPT_INLINE tSirNwType
25290WDI_2_HAL_NW_TYPE
25291(
25292 WDI_NwType wdiNWType
25293)
25294{
Jeff Johnsone7245742012-09-05 17:12:55 -070025295 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025296 the chances of getting inlined*/
25297 switch( wdiNWType )
25298 {
25299 case WDI_11A_NW_TYPE:
25300 return eSIR_11A_NW_TYPE;
25301 case WDI_11B_NW_TYPE:
25302 return eSIR_11B_NW_TYPE;
25303 case WDI_11G_NW_TYPE:
25304 return eSIR_11G_NW_TYPE;
25305 case WDI_11N_NW_TYPE:
25306 return eSIR_11N_NW_TYPE;
25307 }
25308
Jeff Johnsone7245742012-09-05 17:12:55 -070025309 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025310}/*WDI_2_HAL_NW_TYPE*/
25311
25312/*Convert WDI chanel bonding type into HAL cb type*/
25313WPT_STATIC WPT_INLINE ePhyChanBondState
25314WDI_2_HAL_CB_STATE
25315(
25316 WDI_PhyChanBondState wdiCbState
25317)
25318{
Jeff Johnsone7245742012-09-05 17:12:55 -070025319 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025320 the chances of getting inlined*/
25321 switch ( wdiCbState )
25322 {
25323 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25324 return PHY_SINGLE_CHANNEL_CENTERED;
25325 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25326 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25327 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25328 return PHY_DOUBLE_CHANNEL_CENTERED;
25329 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25330 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025331#ifdef WLAN_FEATURE_11AC
25332 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25333 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25334 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25335 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25336 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25337 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25338 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25339 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25340 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25341 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25342 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25343 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25344 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25345 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25346#endif
25347 case WDI_MAX_CB_STATE:
25348 default:
25349 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025350 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025351
Jeff Johnson295189b2012-06-20 16:38:30 -070025352 return PHY_CHANNEL_BONDING_STATE_MAX;
25353}/*WDI_2_HAL_CB_STATE*/
25354
25355/*Convert WDI chanel bonding type into HAL cb type*/
25356WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
25357WDI_2_HAL_HT_OPER_MODE
25358(
25359 WDI_HTOperatingMode wdiHTOperMode
25360)
25361{
Jeff Johnsone7245742012-09-05 17:12:55 -070025362 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025363 the chances of getting inlined*/
25364 switch ( wdiHTOperMode )
25365 {
25366 case WDI_HT_OP_MODE_PURE:
25367 return eSIR_HT_OP_MODE_PURE;
25368 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
25369 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
25370 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
25371 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
25372 case WDI_HT_OP_MODE_MIXED:
25373 return eSIR_HT_OP_MODE_MIXED;
25374 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025375
Jeff Johnson295189b2012-06-20 16:38:30 -070025376 return eSIR_HT_OP_MODE_MAX;
25377}/*WDI_2_HAL_HT_OPER_MODE*/
25378
25379/*Convert WDI mimo PS type into HAL mimo PS type*/
25380WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
25381WDI_2_HAL_MIMO_PS
25382(
25383 WDI_HTMIMOPowerSaveState wdiHTOperMode
25384)
25385{
Jeff Johnsone7245742012-09-05 17:12:55 -070025386 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025387 the chances of getting inlined*/
25388 switch ( wdiHTOperMode )
25389 {
25390 case WDI_HT_MIMO_PS_STATIC:
25391 return eSIR_HT_MIMO_PS_STATIC;
25392 case WDI_HT_MIMO_PS_DYNAMIC:
25393 return eSIR_HT_MIMO_PS_DYNAMIC;
25394 case WDI_HT_MIMO_PS_NA:
25395 return eSIR_HT_MIMO_PS_NA;
25396 case WDI_HT_MIMO_PS_NO_LIMIT:
25397 return eSIR_HT_MIMO_PS_NO_LIMIT;
25398 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025399
Jeff Johnson295189b2012-06-20 16:38:30 -070025400 return eSIR_HT_MIMO_PS_MAX;
25401}/*WDI_2_HAL_MIMO_PS*/
25402
25403/*Convert WDI ENC type into HAL ENC type*/
25404WPT_STATIC WPT_INLINE tAniEdType
25405WDI_2_HAL_ENC_TYPE
25406(
25407 WDI_EncryptType wdiEncType
25408)
25409{
Jeff Johnsone7245742012-09-05 17:12:55 -070025410 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025411 the chances of getting inlined*/
25412 switch ( wdiEncType )
25413 {
25414 case WDI_ENCR_NONE:
25415 return eSIR_ED_NONE;
25416
25417 case WDI_ENCR_WEP40:
25418 return eSIR_ED_WEP40;
25419
25420 case WDI_ENCR_WEP104:
25421 return eSIR_ED_WEP104;
25422
25423 case WDI_ENCR_TKIP:
25424 return eSIR_ED_TKIP;
25425
25426 case WDI_ENCR_CCMP:
25427 return eSIR_ED_CCMP;
25428
25429 case WDI_ENCR_AES_128_CMAC:
25430 return eSIR_ED_AES_128_CMAC;
25431#if defined(FEATURE_WLAN_WAPI)
25432 case WDI_ENCR_WPI:
25433 return eSIR_ED_WPI;
25434#endif
25435 default:
25436 return eSIR_ED_NOT_IMPLEMENTED;
25437 }
25438
25439}/*WDI_2_HAL_ENC_TYPE*/
25440
25441/*Convert WDI WEP type into HAL WEP type*/
25442WPT_STATIC WPT_INLINE tAniWepType
25443WDI_2_HAL_WEP_TYPE
25444(
25445 WDI_WepType wdiWEPType
25446)
25447{
Jeff Johnsone7245742012-09-05 17:12:55 -070025448 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025449 the chances of getting inlined*/
25450 switch ( wdiWEPType )
25451 {
25452 case WDI_WEP_STATIC:
25453 return eSIR_WEP_STATIC;
25454
25455 case WDI_WEP_DYNAMIC:
25456 return eSIR_WEP_DYNAMIC;
25457 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025458
Jeff Johnson295189b2012-06-20 16:38:30 -070025459 return eSIR_WEP_MAX;
25460}/*WDI_2_HAL_WEP_TYPE*/
25461
25462WPT_STATIC WPT_INLINE tSirLinkState
25463WDI_2_HAL_LINK_STATE
25464(
25465 WDI_LinkStateType wdiLinkState
25466)
25467{
Jeff Johnsone7245742012-09-05 17:12:55 -070025468 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025469 the chances of getting inlined*/
25470 switch ( wdiLinkState )
25471 {
25472 case WDI_LINK_IDLE_STATE:
25473 return eSIR_LINK_IDLE_STATE;
25474
25475 case WDI_LINK_PREASSOC_STATE:
25476 return eSIR_LINK_PREASSOC_STATE;
25477
25478 case WDI_LINK_POSTASSOC_STATE:
25479 return eSIR_LINK_POSTASSOC_STATE;
25480
25481 case WDI_LINK_AP_STATE:
25482 return eSIR_LINK_AP_STATE;
25483
25484 case WDI_LINK_IBSS_STATE:
25485 return eSIR_LINK_IBSS_STATE;
25486
25487 case WDI_LINK_BTAMP_PREASSOC_STATE:
25488 return eSIR_LINK_BTAMP_PREASSOC_STATE;
25489
25490 case WDI_LINK_BTAMP_POSTASSOC_STATE:
25491 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
25492
25493 case WDI_LINK_BTAMP_AP_STATE:
25494 return eSIR_LINK_BTAMP_AP_STATE;
25495
25496 case WDI_LINK_BTAMP_STA_STATE:
25497 return eSIR_LINK_BTAMP_STA_STATE;
25498
25499 case WDI_LINK_LEARN_STATE:
25500 return eSIR_LINK_LEARN_STATE;
25501
25502 case WDI_LINK_SCAN_STATE:
25503 return eSIR_LINK_SCAN_STATE;
25504
25505 case WDI_LINK_FINISH_SCAN_STATE:
25506 return eSIR_LINK_FINISH_SCAN_STATE;
25507
25508 case WDI_LINK_INIT_CAL_STATE:
25509 return eSIR_LINK_INIT_CAL_STATE;
25510
25511 case WDI_LINK_FINISH_CAL_STATE:
25512 return eSIR_LINK_FINISH_CAL_STATE;
25513
Jeff Johnson295189b2012-06-20 16:38:30 -070025514 case WDI_LINK_LISTEN_STATE:
25515 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025516
Gopichand Nakkala924e4552013-05-08 19:18:14 +053025517 case WDI_LINK_SEND_ACTION_STATE:
25518 return eSIR_LINK_SEND_ACTION_STATE;
25519
Jeff Johnson295189b2012-06-20 16:38:30 -070025520 default:
25521 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070025522 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025523}
25524
Jeff Johnsone7245742012-09-05 17:12:55 -070025525/*Translate a STA Context from WDI into HAL*/
25526WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025527void
25528WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025529(
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 tConfigStaParams* phalConfigSta,
25531 WDI_ConfigStaReqInfoType* pwdiConfigSta
25532)
25533{
25534 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025535#ifdef WLAN_FEATURE_11AC
25536 /* Get the Version 1 Handler */
25537 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25538 if (WDI_getFwWlanFeatCaps(DOT11AC))
25539 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025540 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025541 }
25542#endif
25543 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025545
Jeff Johnsone7245742012-09-05 17:12:55 -070025546 wpalMemoryCopy(phalConfigSta->bssId,
25547 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25548
25549 wpalMemoryCopy(phalConfigSta->staMac,
25550 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025551
25552 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25553 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25554 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25555 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25556 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25557 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25558 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25559 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25560 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25561 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25562 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25563 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25564 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25565 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25566 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25567 phalConfigSta->action = pwdiConfigSta->wdiAction;
25568 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25569 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25570 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25571 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25572 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25573 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25574 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025575
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25577
Jeff Johnsone7245742012-09-05 17:12:55 -070025578 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025579 pwdiConfigSta->wdiSupportedRates.opRateMode;
25580 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25581 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025582 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025583 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25584 }
25585 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25586 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025587 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025588 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25589 }
25590 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25591 {
25592 phalConfigSta->supportedRates.aniLegacyRates[i] =
25593 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25594 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025595 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025596 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25597 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25598 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025599 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025600 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25601 }
25602 phalConfigSta->supportedRates.rxHighestDataRate =
25603 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25604
Jeff Johnsone7245742012-09-05 17:12:55 -070025605#ifdef WLAN_FEATURE_11AC
25606 if(phalConfigSta_V1 != NULL)
25607 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025608 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25609 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25610 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25611 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 }
25613#endif
25614
Jeff Johnson295189b2012-06-20 16:38:30 -070025615 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025616
Jeff Johnsone7245742012-09-05 17:12:55 -070025617#ifdef WLAN_FEATURE_11AC
25618 if(phalConfigSta_V1 != NULL)
25619 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025620 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25621 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025622 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025623 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025624 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25625 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25626
Jeff Johnsone7245742012-09-05 17:12:55 -070025627 }
25628#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025629}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025630
25631/*Translate a Rate set info from WDI into HAL*/
25632WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025633WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025634(
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 tSirMacRateSet* pHalRateSet,
25636 WDI_RateSet* pwdiRateSet
25637)
25638{
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25641
25642 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25643 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25644
25645 for ( i = 0; i < pHalRateSet->numRates; i++ )
25646 {
25647 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25648 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025649
Jeff Johnson295189b2012-06-20 16:38:30 -070025650}/*WDI_CopyWDIRateSetToHALRateSet*/
25651
25652
25653/*Translate an EDCA Parameter Record from WDI into HAL*/
25654WPT_STATIC WPT_INLINE void
25655WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025656(
Jeff Johnson295189b2012-06-20 16:38:30 -070025657 tSirMacEdcaParamRecord* phalEdcaParam,
25658 WDI_EdcaParamRecord* pWDIEdcaParam
25659)
25660{
Jeff Johnsone7245742012-09-05 17:12:55 -070025661 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025662 the chances of getting inlined*/
25663
25664 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25665 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25666 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25667 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25668
25669 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25670 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25671 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25672}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25673
25674
25675/*Copy a management frame header from WDI fmt into HAL fmt*/
25676WPT_STATIC WPT_INLINE void
25677WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25678(
25679 tSirMacMgmtHdr* pmacMgmtHdr,
25680 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25681)
25682{
25683 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25684 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25685 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25686 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25687 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25688 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25689 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25690 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25691 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25692 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25693 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25694
25695 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25696 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25697
Jeff Johnsone7245742012-09-05 17:12:55 -070025698 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025699 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025700 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025701 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025702 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025703 pwdiMacMgmtHdr->bssId, 6);
25704
25705 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25706 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25707 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25708
25709}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25710
25711
25712/*Copy config bss parameters from WDI fmt into HAL fmt*/
25713WPT_STATIC WPT_INLINE void
25714WDI_CopyWDIConfigBSSToHALConfigBSS
25715(
25716 tConfigBssParams* phalConfigBSS,
25717 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25718)
25719{
25720
25721 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025722#ifdef WLAN_FEATURE_11AC
25723 /* Get the Version 1 Handler */
25724 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25725 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025726 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025727#endif
25728
Jeff Johnson295189b2012-06-20 16:38:30 -070025729 wpalMemoryCopy( phalConfigBSS->bssId,
25730 pwdiConfigBSS->macBSSID,
25731 WDI_MAC_ADDR_LEN);
25732
25733#ifdef HAL_SELF_STA_PER_BSS
25734 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25735 pwdiConfigBSS->macSelfAddr,
25736 WDI_MAC_ADDR_LEN);
25737#endif
25738
25739 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25740
25741 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25742 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25743
Jeff Johnsone7245742012-09-05 17:12:55 -070025744 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025745 pwdiConfigBSS->ucShortSlotTimeSupported;
25746 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25747 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25748 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25749 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25750 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025751 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025752 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25753 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25754 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25755 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25756 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25757 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25758 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25759 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25760 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25761 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25762 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25763
Jeff Johnsone7245742012-09-05 17:12:55 -070025764 phalConfigBSS->htOperMode =
25765 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025766
25767 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25768 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25769 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
Rajeev Kumar Sirasanagandlaade0a332016-06-29 16:52:15 +053025770
25771 if (vos_is_probe_rsp_offload_enabled())
25772 phalConfigBSS->bProxyProbeRespEn = 1;
25773 else
25774 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
Jeff Johnson295189b2012-06-20 16:38:30 -070025775
25776#ifdef WLAN_FEATURE_VOWIFI
25777 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25778#endif
25779
25780 /*! Used 32 as magic number because that is how the ssid is declared inside the
25781 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025782 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025783 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25784 pwdiConfigBSS->wdiSSID.ucLength : 32;
25785 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025786 pwdiConfigBSS->wdiSSID.sSSID,
25787 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025788
25789 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25790 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025791
Jeff Johnson295189b2012-06-20 16:38:30 -070025792 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25793 &pwdiConfigBSS->wdiRateSet);
25794
25795 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25796
25797 if(phalConfigBSS->edcaParamsValid)
25798 {
25799 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25800 &pwdiConfigBSS->wdiBEEDCAParams);
25801 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25802 &pwdiConfigBSS->wdiBKEDCAParams);
25803 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25804 &pwdiConfigBSS->wdiVIEDCAParams);
25805 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25806 &pwdiConfigBSS->wdiVOEDCAParams);
25807 }
25808
Jeff Johnsone7245742012-09-05 17:12:55 -070025809 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025810
25811 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25812
25813#ifdef WLAN_FEATURE_VOWIFI_11R
25814
Jeff Johnsone7245742012-09-05 17:12:55 -070025815 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025816 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025817
Jeff Johnson295189b2012-06-20 16:38:30 -070025818 if( phalConfigBSS->extSetStaKeyParamValid )
25819 {
25820 /*-----------------------------------------------------------------------
25821 Copy the STA Key parameters into the HAL message
25822 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025823 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025824 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25825
Jeff Johnsone7245742012-09-05 17:12:55 -070025826 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025827 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25828
25829 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25830
25831 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25832
25833 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25834
Jeff Johnson295189b2012-06-20 16:38:30 -070025835 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25836 keyIndex++)
25837 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025838 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025839 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25840 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25841 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25842 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25843 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25844 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025845 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025846 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025847 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025849 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025850 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25851 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025852 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025853 WDI_MAX_KEY_LENGTH);
25854 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025855 }
25856 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25857 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025858 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025859 sizeof(phalConfigBSS->extSetStaKeyParam) );
25860 }
25861
25862#endif /*WLAN_FEATURE_VOWIFI_11R*/
25863
Jeff Johnsone7245742012-09-05 17:12:55 -070025864#ifdef WLAN_FEATURE_11AC
25865 if(phalConfigBSS_V1 != NULL)
25866 {
25867 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25868 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25869 }
25870#endif
25871
Jeff Johnson295189b2012-06-20 16:38:30 -070025872}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25873
25874
Jeff Johnsone7245742012-09-05 17:12:55 -070025875/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025876 pointed to by user data */
25877WPT_STATIC WPT_INLINE void
25878WDI_ExtractRequestCBFromEvent
25879(
25880 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025881 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025882 void** ppUserData
25883)
25884{
25885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25886 switch ( pEvent->wdiRequest )
25887 {
25888 case WDI_START_REQ:
25889 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25890 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25891 break;
25892 case WDI_STOP_REQ:
25893 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25894 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25895 break;
25896 case WDI_INIT_SCAN_REQ:
25897 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25898 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25899 break;
25900 case WDI_START_SCAN_REQ:
25901 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25902 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25903 break;
25904 case WDI_END_SCAN_REQ:
25905 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25906 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25907 break;
25908 case WDI_FINISH_SCAN_REQ:
25909 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25910 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25911 break;
25912 case WDI_JOIN_REQ:
25913 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25914 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25915 break;
25916 case WDI_CONFIG_BSS_REQ:
25917 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25918 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25919 break;
25920 case WDI_DEL_BSS_REQ:
25921 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25922 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25923 break;
25924 case WDI_POST_ASSOC_REQ:
25925 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25926 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25927 break;
25928 case WDI_DEL_STA_REQ:
25929 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25930 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25931 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025932
25933 case WDI_ADD_STA_SELF_REQ:
25934 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25935 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25936 break;
25937
Jeff Johnson295189b2012-06-20 16:38:30 -070025938 case WDI_DEL_STA_SELF_REQ:
25939 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25940 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25941 break;
25942
25943 case WDI_SET_BSS_KEY_REQ:
25944 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25945 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25946 break;
25947 case WDI_RMV_BSS_KEY_REQ:
25948 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25949 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25950 break;
25951 case WDI_SET_STA_KEY_REQ:
25952 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25953 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25954 break;
25955 case WDI_RMV_STA_KEY_REQ:
25956 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25957 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25958 break;
25959 case WDI_ADD_TS_REQ:
25960 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25961 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25962 break;
25963 case WDI_DEL_TS_REQ:
25964 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25965 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25966 break;
25967 case WDI_UPD_EDCA_PRMS_REQ:
25968 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25969 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25970 break;
25971 case WDI_ADD_BA_SESSION_REQ:
25972 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25973 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25974 break;
25975 case WDI_DEL_BA_REQ:
25976 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25977 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25978 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025979#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025980 case WDI_TSM_STATS_REQ:
25981 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25982 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25983 break;
25984#endif
25985 case WDI_CH_SWITCH_REQ:
25986 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25987 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25988 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025989 case WDI_CH_SWITCH_REQ_V1:
25990 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25991 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25992 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025993 case WDI_CONFIG_STA_REQ:
25994 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25995 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25996 break;
25997 case WDI_SET_LINK_ST_REQ:
25998 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25999 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
26000 break;
26001 case WDI_GET_STATS_REQ:
26002 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26003 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
26004 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026005#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080026006 case WDI_GET_ROAM_RSSI_REQ:
26007 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26008 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
26009 break;
26010#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026011 case WDI_UPDATE_CFG_REQ:
26012 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26013 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
26014 break;
26015 case WDI_ADD_BA_REQ:
26016 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26017 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
26018 break;
26019 case WDI_TRIGGER_BA_REQ:
26020 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26021 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
26022 break;
26023 case WDI_UPD_BCON_PRMS_REQ:
26024 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26025 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
26026 break;
26027 case WDI_SND_BCON_REQ:
26028 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26029 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
26030 break;
26031 case WDI_ENTER_BMPS_REQ:
26032 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26033 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
26034 break;
26035 case WDI_EXIT_BMPS_REQ:
26036 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26037 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
26038 break;
Mihir Shetea4306052014-03-25 00:02:54 +053026039 case WDI_ENTER_IMPS_REQ:
26040 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26041 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
26042 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 case WDI_ENTER_UAPSD_REQ:
26044 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26045 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26046 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026047 case WDI_EXIT_UAPSD_REQ:
26048 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26049 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26050 break;
26051 case WDI_SET_UAPSD_PARAM_REQ:
26052 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26053 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
26054 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026055 case WDI_UPDATE_UAPSD_PARAM_REQ:
26056 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26057 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26058 break;
26059 case WDI_CONFIGURE_RXP_FILTER_REQ:
26060 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26061 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
26062 break;
26063 case WDI_SET_BEACON_FILTER_REQ:
26064 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26065 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
26066 break;
26067 case WDI_REM_BEACON_FILTER_REQ:
26068 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26069 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070026070 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026071 case WDI_SET_RSSI_THRESHOLDS_REQ:
26072 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26073 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
26074 break;
26075 case WDI_HOST_OFFLOAD_REQ:
26076 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26077 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
26078 break;
26079 case WDI_WOWL_ADD_BC_PTRN_REQ:
26080 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26081 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
26082 break;
26083 case WDI_WOWL_DEL_BC_PTRN_REQ:
26084 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26085 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
26086 break;
26087 case WDI_WOWL_ENTER_REQ:
26088 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26089 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
26090 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026091 case WDI_WOWL_EXIT_REQ:
26092 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26093 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
26094 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026095 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
26096 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26097 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
26098 break;
26099 case WDI_FLUSH_AC_REQ:
26100 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26101 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
26102 break;
26103 case WDI_BTAMP_EVENT_REQ:
26104 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26105 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
26106 break;
26107 case WDI_KEEP_ALIVE_REQ:
26108 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26109 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
26110 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026111#if defined FEATURE_WLAN_SCAN_PNO
26112 case WDI_SET_PREF_NETWORK_REQ:
26113 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26114 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
26115 break;
26116 case WDI_SET_RSSI_FILTER_REQ:
26117 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26118 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
26119 break;
26120 case WDI_UPDATE_SCAN_PARAMS_REQ:
26121 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
26122 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
26123 break;
26124#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026125 case WDI_SET_TX_PER_TRACKING_REQ:
26126 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26127 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026128 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026129#if defined WLAN_FEATURE_PACKET_FILTERING
26130 case WDI_8023_MULTICAST_LIST_REQ:
26131 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26132 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
26133 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026134 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
26135 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26136 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
26137 break;
26138 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
26139 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26140 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
26141 break;
26142 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
26143 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26144 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
26145 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026146#endif
26147 case WDI_SET_POWER_PARAMS_REQ:
26148 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26149 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
26150 break;
26151#if defined WLAN_FEATURE_GTK_OFFLOAD
26152 case WDI_GTK_OFFLOAD_REQ:
26153 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
26154 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
26155 break;
26156 case WDI_GTK_OFFLOAD_GETINFO_REQ:
26157 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
26158 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
26159 break;
26160#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026161
Jeff Johnson295189b2012-06-20 16:38:30 -070026162 default:
26163 *ppfnReqCB = NULL;
26164 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026165 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026166 }
26167}/*WDI_ExtractRequestCBFromEvent*/
26168
26169
26170/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026171 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 frame xtl is enabled for a particular STA.
26173
26174 WDI_PostAssocReq must have been called.
26175
Jeff Johnsone7245742012-09-05 17:12:55 -070026176 @param uSTAIdx: STA index
26177
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 @see WDI_PostAssocReq
26179 @return Result of the function call
26180*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026181wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070026182WDI_IsHwFrameTxTranslationCapable
26183(
26184 wpt_uint8 uSTAIdx
26185)
26186{
Jeff Johnsone7245742012-09-05 17:12:55 -070026187 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070026188 uma value*/
26189 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026190 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026191 ------------------------------------------------------------------------*/
26192 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26193 {
26194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26195 "WDI API call before module is initialized - Fail request");
26196
Jeff Johnsone7245742012-09-05 17:12:55 -070026197 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026198 }
26199
Gopichand Nakkala976e3252013-01-03 15:45:56 -080026200#ifdef WLAN_SOFTAP_VSTA_FEATURE
26201 if (IS_VSTA_IDX(uSTAIdx))
26202 {
26203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26204 "STA %d is a Virtual STA, "
26205 "HW frame translation disabled", uSTAIdx);
26206 return eWLAN_PAL_FALSE;
26207 }
26208#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070026209
Jeff Johnson295189b2012-06-20 16:38:30 -070026210 return gWDICb.bFrameTransEnabled;
26211}/*WDI_IsHwFrameTxTranslationCapable*/
26212
Katya Nigam6201c3e2014-05-27 17:51:42 +053026213
26214/**
26215 @brief WDI_IsSelfSTA - check if staid is self sta index
26216
26217
26218 @param pWDICtx: pointer to the WLAN DAL context
26219 ucSTAIdx: station index
26220
26221 @return Result of the function call
26222*/
26223wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
26224{
26225 wpt_uint8 ucSTAType;
26226
26227 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
26228 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
26229 {
26230 if( ucSTAType == WDI_STA_ENTRY_SELF )
26231 return eWLAN_PAL_TRUE;
26232 }
26233
26234 return eWLAN_PAL_FALSE;
26235}
26236
26237
26238
Jeff Johnson295189b2012-06-20 16:38:30 -070026239#ifdef FEATURE_WLAN_SCAN_PNO
26240/**
26241 @brief WDI_SetPreferredNetworkList
26242
Jeff Johnsone7245742012-09-05 17:12:55 -070026243 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026244 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026245
Jeff Johnson295189b2012-06-20 16:38:30 -070026246 wdiPNOScanCb: callback for passing back the response
26247 of the Set PNO operation received from the
26248 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026249
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026251 callback
26252
Jeff Johnson295189b2012-06-20 16:38:30 -070026253 @return Result of the function call
26254*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026256WDI_SetPreferredNetworkReq
26257(
26258 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26259 WDI_PNOScanCb wdiPNOScanCb,
26260 void* pUserData
26261)
26262{
26263 WDI_EventInfoType wdiEventData = {{0}};
26264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26265
26266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026268 ------------------------------------------------------------------------*/
26269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26270 {
26271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26272 "WDI API call before module is initialized - Fail request");
26273
Jeff Johnsone7245742012-09-05 17:12:55 -070026274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026275 }
26276
26277 /*------------------------------------------------------------------------
26278 Fill in Event data and post to the Main FSM
26279 ------------------------------------------------------------------------*/
26280 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026281 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026282 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026283 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 wdiEventData.pUserData = pUserData;
26285
26286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26287}
26288
26289
26290/**
26291 @brief WDI_SetRssiFilterReq
26292
Jeff Johnsone7245742012-09-05 17:12:55 -070026293 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026294 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026295
Jeff Johnson295189b2012-06-20 16:38:30 -070026296 wdiRssiFilterCb: callback for passing back the response
26297 of the Set RSSI Filter operation received from the
26298 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026299
Jeff Johnson295189b2012-06-20 16:38:30 -070026300 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026301 callback
26302
Jeff Johnson295189b2012-06-20 16:38:30 -070026303 @return Result of the function call
26304*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026305WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026306WDI_SetRssiFilterReq
26307(
26308 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26309 WDI_RssiFilterCb wdiRssiFilterCb,
26310 void* pUserData
26311)
26312{
26313 WDI_EventInfoType wdiEventData = {{0}};
26314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26315
26316 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026317 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026318 ------------------------------------------------------------------------*/
26319 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26320 {
26321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26322 "WDI API call before module is initialized - Fail request");
26323
Jeff Johnsone7245742012-09-05 17:12:55 -070026324 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 }
26326
26327 /*------------------------------------------------------------------------
26328 Fill in Event data and post to the Main FSM
26329 ------------------------------------------------------------------------*/
26330 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026331 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026332 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026333 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026334 wdiEventData.pUserData = pUserData;
26335
26336 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26337}/*WDI_SetRssiFilterReq*/
26338
26339/**
26340 @brief WDI_UpdateScanParamsReq
26341
Jeff Johnsone7245742012-09-05 17:12:55 -070026342 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026343 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026344
Jeff Johnson295189b2012-06-20 16:38:30 -070026345 wdiUpdateScanParamsCb: callback for passing back the response
26346 of the Set PNO operation received from the
26347 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026348
Jeff Johnson295189b2012-06-20 16:38:30 -070026349 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026350 callback
26351
Jeff Johnson295189b2012-06-20 16:38:30 -070026352 @return Result of the function call
26353*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026354WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026355WDI_UpdateScanParamsReq
26356(
26357 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
26358 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
26359 void* pUserData
26360)
26361{
26362 WDI_EventInfoType wdiEventData = {{0}};
26363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26364
26365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026366 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026367 ------------------------------------------------------------------------*/
26368 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26369 {
26370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26371 "WDI API call before module is initialized - Fail request");
26372
Jeff Johnsone7245742012-09-05 17:12:55 -070026373 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026374 }
26375
26376 /*------------------------------------------------------------------------
26377 Fill in Event data and post to the Main FSM
26378 ------------------------------------------------------------------------*/
26379 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026380 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026381 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026382 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026383 wdiEventData.pUserData = pUserData;
26384
26385 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26386}
26387
26388/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026389 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026390 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026391
26392 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026393 pwdiPNOScanReqParams: pointer to the info received
26394 from upper layers
26395 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026396 and its size
26397
Jeff Johnson295189b2012-06-20 16:38:30 -070026398 @return Result of the function call
26399*/
26400
26401WDI_Status
26402WDI_PackPreferredNetworkList
26403(
26404 WDI_ControlBlockType* pWDICtx,
26405 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26406 wpt_uint8** ppSendBuffer,
26407 wpt_uint16* pSize
26408)
26409{
Jeff Johnsone7245742012-09-05 17:12:55 -070026410 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026411 wpt_uint16 usDataOffset = 0;
26412 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026413 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026414 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026415 /*-----------------------------------------------------------------------
26416 Get message buffer
26417 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026418 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026419 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026420 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026421 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026422 {
26423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026424 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026425 pwdiPNOScanReqParams);
26426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026428 }
26429
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026430 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
26431
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 /*-------------------------------------------------------------------------
26433 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26434 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026435 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026436 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026437 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026438 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26439
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026440 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026441 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026443 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026444 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26445
26446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026447 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026448 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26449 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26450 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26451
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026452 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026453 {
26454 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026455 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026456 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26457
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026458 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026459 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026460 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026461
26462 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026463 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026464 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026465
26466 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026467 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026468 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026469
Jeff Johnsone7245742012-09-05 17:12:55 -070026470 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026471 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026472 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070026473 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
26474 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26475 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
26476 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026477
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026478 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026479 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026480 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026481
26482 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026483 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026484 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26485
26486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026487 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026488 pPrefNetwListParams->aNetworks[i].ssId.length,
26489 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026490 }
26491
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026492 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026493 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026494 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26495 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26496 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26497
26498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026499 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026500 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026501 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26502 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26503
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026504 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026505 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026506 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026507 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026508 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026509 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26510 }
26511
26512 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026513 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026514 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26515 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26516 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
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->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026520 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026521 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026522
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026523 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026524 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26525 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26526 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026527 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026528
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026529 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026530 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026531 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026532
26533 /*Set the output values*/
26534 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026535 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026536
26537 return WDI_STATUS_SUCCESS;
26538}/*WDI_PackPreferredNetworkList*/
26539
26540/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026541 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026542 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026543
26544 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026545 pwdiPNOScanReqParams: pointer to the info received
26546 from upper layers
26547 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026548 and its size
26549
Jeff Johnson295189b2012-06-20 16:38:30 -070026550 @return Result of the function call
26551*/
26552
26553WDI_Status
26554WDI_PackPreferredNetworkListNew
26555(
26556 WDI_ControlBlockType* pWDICtx,
26557 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26558 wpt_uint8** ppSendBuffer,
26559 wpt_uint16* pSize
26560)
26561{
Jeff Johnsone7245742012-09-05 17:12:55 -070026562 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026563 wpt_uint16 usDataOffset = 0;
26564 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026565 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026566 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026567
26568 /*-----------------------------------------------------------------------
26569 Get message buffer
26570 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026571 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026572 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026573 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026574 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026575 {
26576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026577 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026578 pwdiPNOScanReqParams);
26579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026581 }
26582
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026583 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26584
Jeff Johnson295189b2012-06-20 16:38:30 -070026585 /*-------------------------------------------------------------------------
26586 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26587 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026588 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026589 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026590 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026591 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26592
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026593 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026594 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026595 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026596 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026597 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26598
26599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026600 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026601 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26602 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26603 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26604
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026605 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026606 {
26607 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026608 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026609 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26610
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026611 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026612 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026613 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026614
26615 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026616 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026617 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026618
26619 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026620 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026621 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026622
26623 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026624 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026625 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026626
Jeff Johnsone7245742012-09-05 17:12:55 -070026627 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026628 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026629 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026630 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26631
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026632 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026633 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026634 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026635
26636 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026637 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026638 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26639
26640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026641 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026642 pPrefNetwListParams->aNetworks[i].ssId.length,
26643 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026644 }
26645
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026646 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026647 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026648 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26649 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26650 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26651
26652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026653 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026654 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026655 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26656 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26657
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026658 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026659 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026660 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026661 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026662 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026663 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26664 }
26665
26666 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026667 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026668 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26669 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26670 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
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->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026674 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026675 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026676
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026677 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026678 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26679 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26680 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026681 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026682
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026683 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026684 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026685 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026686
Jeff Johnson295189b2012-06-20 16:38:30 -070026687
26688 /*Set the output values*/
26689 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026690 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026691
26692 return WDI_STATUS_SUCCESS;
26693}/*WDI_PackPreferredNetworkListNew*/
26694
26695/**
26696 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026697
26698 @param pWDICtx: pointer to the WLAN DAL context
26699 pEventData: pointer to the event information structure
26700
Jeff Johnson295189b2012-06-20 16:38:30 -070026701 @return Result of the function call
26702*/
26703WDI_Status
26704WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026705(
Jeff Johnson295189b2012-06-20 16:38:30 -070026706 WDI_ControlBlockType* pWDICtx,
26707 WDI_EventInfoType* pEventData
26708)
26709{
26710 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26711 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026712 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026713 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026714 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026715
26716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026718 -------------------------------------------------------------------------*/
26719 if (( NULL == pEventData ) ||
26720 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26721 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26722 {
26723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026727 }
26728
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026729 /*----------------------------------------------------------------------
26730 Avoid Enable PNO during any active session or an ongoing session
26731 ----------------------------------------------------------------------*/
26732 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26733 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26734 {
26735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26736 "%s:(Active/Ongoing Session) - Fail request", __func__);
26737
26738 return WDI_STATUS_E_FAILURE;
26739 }
26740
Jeff Johnson295189b2012-06-20 16:38:30 -070026741 /*-------------------------------------------------------------------------
26742 Pack the PNO request structure based on version
26743 -------------------------------------------------------------------------*/
26744 if ( pWDICtx->wdiPNOVersion > 0 )
26745 {
26746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026747 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026748 pWDICtx->wdiPNOVersion);
26749
26750 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26751 &pSendBuffer, &usSendSize);
26752 }
26753 else
26754 {
26755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026756 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026757 pWDICtx->wdiPNOVersion);
26758
26759 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26760 &pSendBuffer, &usSendSize);
26761 }
26762
26763 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26764 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26765 {
26766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026767 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026769 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026770 }
26771
26772 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026773 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026774
26775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026776 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026777 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026778 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26779 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026780}
26781
26782/**
26783 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026784
26785 @param pWDICtx: pointer to the WLAN DAL context
26786 pEventData: pointer to the event information structure
26787
Jeff Johnson295189b2012-06-20 16:38:30 -070026788 @see
26789 @return Result of the function call
26790*/
26791WDI_Status
26792WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026793(
Jeff Johnson295189b2012-06-20 16:38:30 -070026794 WDI_ControlBlockType* pWDICtx,
26795 WDI_EventInfoType* pEventData
26796)
26797{
26798 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26799 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026800 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026801 wpt_uint16 usDataOffset = 0;
26802 wpt_uint16 usSendSize = 0;
26803 wpt_uint8 ucRssiThreshold;
26804
26805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026807 -------------------------------------------------------------------------*/
26808 if (( NULL == pEventData ) ||
26809 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26810 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26811 {
26812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026816 }
26817
26818 /*-----------------------------------------------------------------------
26819 Get message buffer
26820 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026821 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026822 sizeof(ucRssiThreshold),
26823 &pSendBuffer, &usDataOffset, &usSendSize))||
26824 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26825 {
26826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026827 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026828 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026831 }
26832
26833 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26834
Jeff Johnsone7245742012-09-05 17:12:55 -070026835 wpalMemoryCopy( pSendBuffer+usDataOffset,
26836 &ucRssiThreshold,
26837 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026838
26839 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026840 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026841
26842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026843 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026845 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26846 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026847}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026848#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26849/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026850 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026851
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026852 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026853 by the Device Interface
26854
26855 wdiRoamOffloadScancb: callback for passing back the response
26856 of the Roam Candidate Lookup Req operation received from the
26857 device
26858
26859 pUserData: user data will be passed back with the
26860 callback
26861 @return Result of the function call
26862*/
26863WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026864WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026865(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026866 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026867 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26868 void* pUserData
26869)
26870{
26871 WDI_EventInfoType wdiEventData = {{0}};
26872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26873
26874 /*------------------------------------------------------------------------
26875 Sanity Check
26876 ------------------------------------------------------------------------*/
26877 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26878 {
26879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26880 "WDI API call before module is initialized - Fail request");
26881
26882 return WDI_STATUS_E_NOT_ALLOWED;
26883 }
26884
26885 /*------------------------------------------------------------------------
26886 Fill in Event data and post to the Main FSM
26887 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026888 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26889 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26890 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026891 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26892 wdiEventData.pUserData = pUserData;
26893
26894 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26895}
26896
Kapil Guptab3a981b2016-06-26 13:36:51 +053026897WDI_Status
26898WDI_PERRoamScanOffloadReq(WDI_PERRoamOffloadScanInfo
26899 *pwdiPERRoamScanOffloadReqParams,
26900 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb,
26901 void *pUserData)
26902{
26903 WDI_EventInfoType wdiEventData = {{0}};
26904
26905 if (eWLAN_PAL_FALSE == gWDIInitialized) {
26906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26907 "WDI API call before module is initialized - Fail request");
26908
26909 return WDI_STATUS_E_NOT_ALLOWED;
26910 }
26911
26912 wdiEventData.wdiRequest = WDI_PER_ROAM_SCAN_OFFLOAD_REQ;
26913 wdiEventData.pEventData = pwdiPERRoamScanOffloadReqParams;
26914 wdiEventData.uEventDataSize = sizeof(*pwdiPERRoamScanOffloadReqParams);
26915 wdiEventData.pCBfnc = wdiPERRoamOffloadScancb;
26916 wdiEventData.pUserData = pUserData;
26917
26918 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26919}
26920
26921WDI_Status
26922WDI_PERRoamScanTriggerReq(WDI_PERRoamTriggerScanInfo
26923 *pwdiPERRoamScanTriggerReqParams,
26924 WDI_PERRoamTriggerScanCb wdiPERRoamTriggerScancb,
26925 void *pUserData)
26926{
26927 WDI_EventInfoType wdiEventData = {{0}};
26928 if (eWLAN_PAL_FALSE == gWDIInitialized) {
26929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26930 "WDI API call before module is initialized - Fail request");
26931
26932 return WDI_STATUS_E_NOT_ALLOWED;
26933 }
26934
26935 wdiEventData.wdiRequest = WDI_PER_ROAM_SCAN_TRIGGER_REQ;
26936 wdiEventData.pEventData = pwdiPERRoamScanTriggerReqParams;
26937 wdiEventData.uEventDataSize = sizeof(*pwdiPERRoamScanTriggerReqParams);
26938 wdiEventData.pCBfnc = wdiPERRoamTriggerScancb;
26939 wdiEventData.pUserData = pUserData;
26940
26941 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26942}
26943
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026944void
26945WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26946{
26947 switch (wdiEdType)
26948 {
26949 case WDI_ED_NONE:
26950 *EdType = eED_NONE;
26951 break;
26952 case WDI_ED_WEP40:
26953 case WDI_ED_WEP104:
26954 *EdType = eED_WEP;
26955 break;
26956 case WDI_ED_TKIP:
26957 *EdType = eED_TKIP;
26958 break;
26959 case WDI_ED_CCMP:
26960#ifdef WLAN_FEATURE_11W
26961 case WDI_ED_AES_128_CMAC:
26962#endif
26963 *EdType = eED_CCMP;
26964 break;
26965#ifdef FEATURE_WLAN_WAPI
26966 case WDI_ED_WPI:
26967 *EdType = eED_WPI;
26968 break;
26969#endif
26970 case WDI_ED_ANY:
26971 *EdType = eED_ANY;
26972 break;
26973
26974 default:
26975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26976 "%s: Unknown Encryption Type", __func__);
26977 break;
26978 }
26979}
26980
26981/**
26982 @brief Helper function to pack Start Roam Candidate Lookup
26983 Request parameters
26984
26985 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026986 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026987 from upper layers
26988 ppSendBuffer, pSize - out pointers of the packed buffer
26989 and its size
26990
26991 @return Result of the function call
26992*/
26993
26994WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026995WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026996(
26997 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026998 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026999 wpt_uint8** ppSendBuffer,
27000 wpt_uint16* pSize
27001)
27002{
27003 wpt_uint8* pSendBuffer = NULL;
27004 wpt_uint16 usDataOffset = 0;
27005 wpt_uint16 usSendSize = 0;
27006 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
27007 wpt_uint8 i;
27008 /*-----------------------------------------------------------------------
27009 Get message buffer
27010 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027011 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027012 sizeof(tRoamCandidateListParams),
27013 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070027014 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027015 {
27016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027017 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027018 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027019 WDI_ASSERT(0);
27020 return WDI_STATUS_E_FAILURE;
27021 }
27022 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070027023 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027024 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027025 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027026 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027027 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027028 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027029 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027030 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027031 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027032 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027033
27034 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027035 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027036 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027037 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027038 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
27039 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027040 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
27041 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
27042 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
27043 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
27044 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080027045 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027046 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080027047 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027048 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
27049 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
27050 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
27051 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
27052 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
27053 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
27054 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080027055 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027056 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027057 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
27058 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
27059 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027060
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
27062 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
27063 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
27064 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
27065 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
27066 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080027067 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027068 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
27069 pRoamCandidateListParams->RoamScanOffloadEnabled,
27070 pRoamCandidateListParams->Command,
27071 pRoamCandidateListParams->StartScanReason,
27072 pRoamCandidateListParams->NeighborScanTimerPeriod,
27073 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
27074 pRoamCandidateListParams->NeighborScanChannelMinTime,
27075 pRoamCandidateListParams->NeighborScanChannelMaxTime,
27076 pRoamCandidateListParams->EmptyRefreshScanPeriod,
27077 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
27078 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
27079 pRoamCandidateListParams->ConnectedNetwork.authentication,
27080 pRoamCandidateListParams->ConnectedNetwork.encryption,
27081 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
27082 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
27083 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027084 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027085 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027086 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027087 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027088 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
27089 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027090 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027091 pRoamCandidateListParams->us24GProbeSize);
27092 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027093 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027094 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027095 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027096 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
27097 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027098 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027099 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027100 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
27101 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
27102 pRoamCandidateListParams->nProbes =
27103 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
27104 pRoamCandidateListParams->HomeAwayTime =
27105 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
27106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027107 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
27108 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027110 }
27111
27112
27113 /*Set the output values*/
27114 *ppSendBuffer = pSendBuffer;
27115 *pSize = usSendSize;
27116 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027117}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027118
27119/**
27120 @brief Process Start Roam Candidate Lookup Request function
27121
27122 @param pWDICtx: pointer to the WLAN DAL context
27123 pEventData: pointer to the event information structure
27124
27125 @return Result of the function call
27126*/
27127WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027128WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027129(
27130 WDI_ControlBlockType* pWDICtx,
27131 WDI_EventInfoType* pEventData
27132)
27133{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027134 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027135 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
27136 wpt_uint8* pSendBuffer = NULL;
27137 wpt_uint16 usSendSize = 0;
27138 WDI_Status wdiStatus;
27139 /*-------------------------------------------------------------------------
27140 Sanity check
27141 -------------------------------------------------------------------------*/
27142 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027143 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027144 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
27145 {
27146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27147 "%s: Invalid parameters", __func__);
27148 WDI_ASSERT(0);
27149 return WDI_STATUS_E_FAILURE;
27150 }
27151
27152 /*-------------------------------------------------------------------------
27153 Pack the Start Roam Candidate Lookup request structure based on version
27154 -------------------------------------------------------------------------*/
27155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27156 "%s: Packing Roam Candidate Lookup request ", __func__);
27157
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027158 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027159 &pSendBuffer, &usSendSize);
27160
27161 if (( WDI_STATUS_SUCCESS != wdiStatus )||
27162 ( NULL == pSendBuffer )||( 0 == usSendSize ))
27163 {
27164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27165 "%s: failed to pack request parameters", __func__);
27166 WDI_ASSERT(0);
27167 return wdiStatus;
27168 }
27169
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027170 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
27171 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027172
27173 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027174 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027175 -------------------------------------------------------------------------*/
27176 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027177 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027178}
27179
Kapil Guptab3a981b2016-06-26 13:36:51 +053027180
27181WDI_Status
27182WDI_ProcessPERRoamScanOffloadReq(WDI_ControlBlockType *pWDICtx,
27183 WDI_EventInfoType *pEventData)
27184{
27185 wpt_uint16 usSendSize = 0;
27186 wpt_uint16 usDataOffset = 0;
27187 wpt_uint8 *pSendBuffer = NULL;
27188 WDI_PERRoamOffloadScanInfo *wdiPERRoamOffloadReq = NULL;
27189 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb = NULL;
27190 tSetPerRoamConfigReq halPERRoamConfigReq;
27191
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027192 if (!pEventData) {
27193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27194 "%s: *pEventdata is null", __func__);
27195 WDI_ASSERT(0);
27196 return WDI_STATUS_E_FAILURE;
27197 }
27198
Kapil Guptab3a981b2016-06-26 13:36:51 +053027199 wdiPERRoamOffloadReq = (WDI_PERRoamOffloadScanInfo *)pEventData->pEventData;
27200 wdiPERRoamOffloadScancb = (WDI_PERRoamOffloadScanCb)pEventData->pCBfnc;
27201
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027202 if (!wdiPERRoamOffloadReq || !wdiPERRoamOffloadScancb) {
Kapil Guptab3a981b2016-06-26 13:36:51 +053027203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27204 "%s: Invalid parameters", __func__);
27205 WDI_ASSERT(0);
27206 return WDI_STATUS_E_FAILURE;
27207 }
27208
27209 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27210 WDI_PER_ROAM_SCAN_OFFLOAD_REQ,
27211 sizeof(halPERRoamConfigReq.perRoamConfigParams),
27212 &pSendBuffer, &usDataOffset, &usSendSize))||
27213 (usSendSize < (usDataOffset +
27214 sizeof(halPERRoamConfigReq.perRoamConfigParams)))) {
27215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27216 "Unable to get send buffer halPERRoamConfigReq Req");
27217 WDI_ASSERT(0);
27218 return WDI_STATUS_E_FAILURE;
27219 }
27220
27221 halPERRoamConfigReq.perRoamConfigParams.request_id =
27222 wdiPERRoamOffloadReq->requestId;
27223 halPERRoamConfigReq.perRoamConfigParams.waitPeriodForNextPERScan =
27224 wdiPERRoamOffloadReq->waitPeriodForNextPERScan;
27225 halPERRoamConfigReq.perRoamConfigParams.rateUpThreshold =
27226 wdiPERRoamOffloadReq->rateUpThreshold;
27227 halPERRoamConfigReq.perRoamConfigParams.rateDownThreshold =
27228 wdiPERRoamOffloadReq->rateDownThreshold;
27229 halPERRoamConfigReq.perRoamConfigParams.isPERRoamCCAEnabled =
27230 wdiPERRoamOffloadReq->isPERRoamCCAEnabled;
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027231 halPERRoamConfigReq.perRoamConfigParams.PERRoamFullScanThreshold =
27232 wdiPERRoamOffloadReq->PERRoamFullScanThreshold;
Kapil Guptab3a981b2016-06-26 13:36:51 +053027233 halPERRoamConfigReq.perRoamConfigParams.PERroamTriggerPercent =
27234 wdiPERRoamOffloadReq->PERroamTriggerPercent;
27235 halPERRoamConfigReq.perRoamConfigParams.PERtimerThreshold =
27236 wdiPERRoamOffloadReq->PERtimerThreshold;
27237
27238 halPERRoamConfigReq.perRoamConfigParams.reserved = 0;
27239
27240 wpalMemoryCopy(pSendBuffer+usDataOffset,
27241 &halPERRoamConfigReq.perRoamConfigParams,
27242 sizeof(halPERRoamConfigReq.perRoamConfigParams));
27243
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27245 "waitPeriodForNextPERScan=%d rateUpThreshold=%d rateDownThreshold=%d isPERRoamCCAEnabled=%d",
Kapil Guptab3a981b2016-06-26 13:36:51 +053027246 halPERRoamConfigReq.perRoamConfigParams.waitPeriodForNextPERScan,
27247 halPERRoamConfigReq.perRoamConfigParams.rateUpThreshold,
27248 halPERRoamConfigReq.perRoamConfigParams.rateDownThreshold,
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027249 halPERRoamConfigReq.perRoamConfigParams.isPERRoamCCAEnabled);
27250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27251 "PERtimerThreshold=%d PERroamTriggerPercent =%d PERRoamFullScanThreshold %d",
Kapil Guptab3a981b2016-06-26 13:36:51 +053027252 halPERRoamConfigReq.perRoamConfigParams.PERtimerThreshold,
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027253 halPERRoamConfigReq.perRoamConfigParams.PERroamTriggerPercent,
27254 halPERRoamConfigReq.perRoamConfigParams.PERRoamFullScanThreshold);
27255
Kapil Guptab3a981b2016-06-26 13:36:51 +053027256 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27257 wdiPERRoamOffloadScancb, pEventData->pUserData,
27258 WDI_PER_ROAM_SCAN_OFFLOAD_RSP);
27259}
27260
27261WDI_Status
27262WDI_ProcessPERRoamScanTriggerReq(WDI_ControlBlockType *pWDICtx,
27263 WDI_EventInfoType *pEventData)
27264{
27265 wpt_uint16 usSendSize = 0;
27266 wpt_uint16 usDataOffset = 0;
27267 wpt_uint8 *pSendBuffer = NULL;
27268 WDI_PERRoamTriggerScanCb wdiPERRoamTriggerScancb = NULL;
27269 WDI_PERRoamTriggerScanInfo *wdiPERRoamTriggerReq;
27270 tStartRoamScanReq halPERRoamTriggerReq;
27271
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027272 if (!pEventData) {
27273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27274 "%s: pEventdata is null", __func__);
27275 WDI_ASSERT(0);
27276 return WDI_STATUS_E_FAILURE;
27277 }
27278
Kapil Guptab3a981b2016-06-26 13:36:51 +053027279 wdiPERRoamTriggerReq = (WDI_PERRoamTriggerScanInfo *) pEventData->pEventData;
27280 wdiPERRoamTriggerScancb = (WDI_PERRoamTriggerScanCb)pEventData->pCBfnc;
27281
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027282 if (!wdiPERRoamTriggerReq || !wdiPERRoamTriggerScancb) {
Kapil Guptab3a981b2016-06-26 13:36:51 +053027283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27284 "%s: Invalid parameters", __func__);
27285 WDI_ASSERT(0);
27286 return WDI_STATUS_E_FAILURE;
27287 }
27288
27289 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27290 WDI_PER_ROAM_SCAN_TRIGGER_REQ,
27291 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams),
27292 &pSendBuffer, &usDataOffset, &usSendSize))||
27293 (usSendSize < (usDataOffset +
27294 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams)))) {
27295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27296 "Unable to get send buffer in GetFrameLog Req");
27297 WDI_ASSERT(0);
27298 return WDI_STATUS_E_FAILURE;
27299 }
27300
27301 halPERRoamTriggerReq.startRoamScanTriggerParams.roamScanReq =
27302 wdiPERRoamTriggerReq->roamScanReq;
27303
27304 wpalMemoryCopy(pSendBuffer+usDataOffset,
27305 &halPERRoamTriggerReq.startRoamScanTriggerParams,
27306 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams));
27307
27308 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27309 wdiPERRoamTriggerScancb, pEventData->pUserData,
27310 WDI_PER_ROAM_SCAN_TRIGGER_RSP);
27311}
27312
27313
27314
27315
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027316/**
27317 @brief Process Start Roam Candidate Lookup Rsp function (called when a
27318 response is being received over the bus from HAL)
27319
27320 @param pWDICtx: pointer to the WLAN DAL context
27321 pEventData: pointer to the event information structure
27322
27323 @see
27324 @return Result of the function call
27325*/
27326WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027327WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027328(
27329 WDI_ControlBlockType* pWDICtx,
27330 WDI_EventInfoType* pEventData
27331)
27332{
27333 WDI_Status wdiStatus;
27334 eHalStatus halStatus;
27335 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
27336
27337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27338
27339 /*-------------------------------------------------------------------------
27340 Sanity check
27341 -------------------------------------------------------------------------*/
27342 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27343 ( NULL == pEventData->pEventData ))
27344 {
27345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27346 "%s: Invalid parameters", __func__);
27347 WDI_ASSERT(0);
27348 return WDI_STATUS_E_FAILURE;
27349 }
27350
27351 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
27352
27353 /*-------------------------------------------------------------------------
27354 Extract response and send it to UMAC
27355 -------------------------------------------------------------------------*/
27356 halStatus = *((eHalStatus*)pEventData->pEventData);
27357 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27358
27359 /*Notify UMAC*/
27360 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
27361
27362 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027363}/* WDI_ProcessRoamScanOffloadRsp */
Kapil Guptab3a981b2016-06-26 13:36:51 +053027364
27365WDI_Status
27366WDI_ProcessPERRoamScanOffloadRsp(WDI_ControlBlockType *pWDICtx,
27367 WDI_EventInfoType *pEventData)
27368{
27369 WDI_Status wdiStatus;
27370 eHalStatus halStatus;
27371 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb = NULL;
27372
27373 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27374 (NULL == pEventData->pEventData)) {
27375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27376 "%s: Invalid parameters", __func__);
27377 WDI_ASSERT(0);
27378 return WDI_STATUS_E_FAILURE;
27379 }
27380
27381 wdiPERRoamOffloadScancb = (WDI_PERRoamOffloadScanCb)pWDICtx->pfncRspCB;
27382
27383 halStatus = *((eHalStatus*)pEventData->pEventData);
27384 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27385
27386 /*Notify UMAC*/
27387 wdiPERRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
27388
27389 return WDI_STATUS_SUCCESS;
27390}/* WDI_ProcessPERRoamScanOffloadRsp */
27391
27392WDI_Status
27393WDI_ProcessPERRoamScanTriggerRsp
27394(
27395 WDI_ControlBlockType* pWDICtx,
27396 WDI_EventInfoType* pEventData
27397)
27398{
27399 WDI_Status wdiStatus;
27400 eHalStatus halStatus;
27401 WDI_PERRoamOffloadScanCb wdiPERRoamTriggerScancb = NULL;
27402
27403 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27404 (NULL == pEventData->pEventData)) {
27405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27406 "%s: Invalid parameters", __func__);
27407 WDI_ASSERT(0);
27408 return WDI_STATUS_E_FAILURE;
27409 }
27410
27411 wdiPERRoamTriggerScancb = (WDI_PERRoamTriggerScanCb)pWDICtx->pfncRspCB;
27412
27413 halStatus = *((eHalStatus*)pEventData->pEventData);
27414 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27415
27416 /* Notify UMAC */
27417 wdiPERRoamTriggerScancb(wdiStatus, pWDICtx->pRspCBUserData);
27418
27419 return WDI_STATUS_SUCCESS;
27420}/* WDI_ProcessPERRoamScanTriggerRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027421#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027422
27423/**
27424 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070027425
27426 @param pWDICtx: pointer to the WLAN DAL context
27427 pEventData: pointer to the event information structure
27428
Jeff Johnson295189b2012-06-20 16:38:30 -070027429 @see
27430 @return Result of the function call
27431*/
27432WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027433WDI_PackUpdateScanParamsReq
27434(
27435 WDI_ControlBlockType* pWDICtx,
27436 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
27437 wpt_uint8** ppSendBuffer,
27438 wpt_uint16* pSize
27439)
27440{
27441 wpt_uint8* pSendBuffer = NULL;
27442 wpt_uint16 usDataOffset = 0;
27443 wpt_uint16 usSendSize = 0;
27444 tUpdateScanParams updateScanParams = {0};
27445
27446
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027448 "Begin WDI Update Scan Parameters Old Style Params");
27449 /*-----------------------------------------------------------------------
27450 Get message buffer
27451 -----------------------------------------------------------------------*/
27452 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27453 sizeof(updateScanParams),
27454 &pSendBuffer, &usDataOffset, &usSendSize))||
27455 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27456 {
27457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027458 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027459 pwdiUpdateScanParams);
27460 WDI_ASSERT(0);
27461 return WDI_STATUS_E_FAILURE;
27462 }
27463
27464 //
27465 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27466 //
27467
27468 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27469 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27470
27471 updateScanParams.ucChannelCount =
27472 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27473 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
27474 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27475 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
27476
27477 wpalMemoryCopy( updateScanParams.aChannels,
27478 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27479 updateScanParams.ucChannelCount);
27480
27481
27482 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27483 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27484 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27485 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27486 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27487
27488 wpalMemoryCopy( pSendBuffer+usDataOffset,
27489 &updateScanParams,
27490 sizeof(updateScanParams));
27491
27492 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27493 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27494
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027496 "End Update Scan Parameters Old Style");
27497
27498 /*Set the output values*/
27499 *ppSendBuffer = pSendBuffer;
27500 *pSize = usSendSize;
27501
27502 return WDI_STATUS_SUCCESS;
27503}
27504
27505/**
27506 @brief Process Update Scan Params function
27507
27508 @param pWDICtx: pointer to the WLAN DAL context
27509 pEventData: pointer to the event information structure
27510
27511 @see
27512 @return Result of the function call
27513*/
27514WDI_Status
27515WDI_PackUpdateScanParamsReqEx
27516(
27517 WDI_ControlBlockType* pWDICtx,
27518 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
27519 wpt_uint8** ppSendBuffer,
27520 wpt_uint16* pSize
27521)
27522{
27523 wpt_uint8* pSendBuffer = NULL;
27524 wpt_uint16 usDataOffset = 0;
27525 wpt_uint16 usSendSize = 0;
27526 tUpdateScanParamsEx updateScanParams = {0};
27527
27528
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027529 /*-----------------------------------------------------------------------
27530 Get message buffer
27531 -----------------------------------------------------------------------*/
27532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27533 sizeof(updateScanParams),
27534 &pSendBuffer, &usDataOffset, &usSendSize))||
27535 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27536 {
27537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027538 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027539 pwdiUpdateScanParams);
27540 WDI_ASSERT(0);
27541 return WDI_STATUS_E_FAILURE;
27542 }
27543
27544 //
27545 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27546 //
27547
27548 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27549 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27550
27551 updateScanParams.ucChannelCount =
27552 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27553 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
27554 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27555 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
27556
27557 wpalMemoryCopy( updateScanParams.aChannels,
27558 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27559 updateScanParams.ucChannelCount);
27560
27561
27562 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27563 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27564 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27565 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27566 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27567
27568 wpalMemoryCopy( pSendBuffer+usDataOffset,
27569 &updateScanParams,
27570 sizeof(updateScanParams));
27571
27572 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27573 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27574
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027575 /*Set the output values*/
27576 *ppSendBuffer = pSendBuffer;
27577 *pSize = usSendSize;
27578
27579 return WDI_STATUS_SUCCESS;
27580}
27581
27582/**
27583 @brief Process Update Scan Params function
27584
27585 @param pWDICtx: pointer to the WLAN DAL context
27586 pEventData: pointer to the event information structure
27587
27588 @see
27589 @return Result of the function call
27590*/
27591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027592WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027593(
Jeff Johnson295189b2012-06-20 16:38:30 -070027594 WDI_ControlBlockType* pWDICtx,
27595 WDI_EventInfoType* pEventData
27596)
27597{
27598 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
27599 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027600 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027601 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027602 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027603
27604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027605 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027606 -------------------------------------------------------------------------*/
27607 if (( NULL == pEventData ) ||
27608 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
27609 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
27610 {
27611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027615 }
27616
27617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27618 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070027619
27620 //
27621 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27622 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027623 if ( pWDICtx->wlanVersion.revision < 1 )
27624 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027625 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027626 &pSendBuffer, &usSendSize);
27627 }
27628 else
27629 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027630 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
27631 &pSendBuffer, &usSendSize);
27632 }
27633
27634 if(WDI_STATUS_SUCCESS != wdiStatus)
27635 {
27636 //memory allocation failed
27637 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027638 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027639
Jeff Johnson295189b2012-06-20 16:38:30 -070027640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027641 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027642 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027643 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027644 wdiUpdateScanParamsCb, pEventData->pUserData,
27645 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027646}
27647
27648/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027649 @brief Process Update Channel Params function
27650
27651 @param pWDICtx: pointer to the WLAN DAL context
27652 pEventData: pointer to the event information structure
27653
27654 @see
27655 @return Result of the function call
27656*/
27657WDI_Status
27658WDI_ProcessUpdateChannelParamsReq
27659(
27660 WDI_ControlBlockType* pWDICtx,
27661 WDI_EventInfoType* pEventData
27662)
27663{
27664 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
27665 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
27666 wpt_uint8* pSendBuffer = NULL;
27667 wpt_uint16 usDataOffset = 0;
27668 wpt_uint16 usSendSize = 0;
27669 tUpdateChannelReqType *updateChannelParams;
27670 wpt_uint32 usUpdateChanParamSize;
27671 wpt_uint8 num_channels = 0;
27672
27673 /*-------------------------------------------------------------------------
27674 Sanity check
27675 -------------------------------------------------------------------------*/
27676 if (( NULL == pEventData ) ||
27677 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
27678 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
27679 {
27680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27681 "%s: Invalid parameters", __func__);
27682 WDI_ASSERT(0);
27683 return WDI_STATUS_E_FAILURE;
27684 }
27685 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053027686 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027687
27688 /*-----------------------------------------------------------------------
27689 Get message buffer
27690 -----------------------------------------------------------------------*/
27691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27692 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
27693 &pSendBuffer, &usDataOffset, &usSendSize))||
27694 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
27695 {
27696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27697 "Unable to get send buffer in Update Channel Params req %p",
27698 pwdiUpdateChanListParams);
27699 WDI_ASSERT(0);
27700 return WDI_STATUS_E_FAILURE;
27701 }
27702 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
27703
27704 updateChannelParams->numChan = num_channels;
27705 wpalMemoryCopy(&updateChannelParams->chanParam,
27706 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
27707 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
27708
27709 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
27710 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
27711
27712 /*-------------------------------------------------------------------------
27713 Send Update channel request to fw
27714 -------------------------------------------------------------------------*/
27715 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27716 wdiUpdateChanParamsCb, pEventData->pUserData,
27717 WDI_UPDATE_CHAN_RESP);
27718}
27719
27720/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027721 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070027722
27723 @param pWDICtx: pointer to the WLAN DAL context
27724 pEventData: pointer to the event information structure
27725
Jeff Johnson295189b2012-06-20 16:38:30 -070027726 @see
27727 @return Result of the function call
27728*/
27729WDI_Status
27730WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070027731(
Jeff Johnson295189b2012-06-20 16:38:30 -070027732 WDI_ControlBlockType* pWDICtx,
27733 WDI_EventInfoType* pEventData
27734)
27735{
Srikant Kuppa066904f2013-05-07 13:56:02 -070027736 WDI_LowLevelIndType wdiInd;
27737 tpPrefNetwFoundParams pNetwFoundParams;
27738 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027739
27740
27741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027743 -------------------------------------------------------------------------*/
27744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27745 ( NULL == pEventData->pEventData ))
27746 {
27747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027749 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070027750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027751 }
27752
27753 /*-------------------------------------------------------------------------
27754 Extract indication and send it to UMAC
27755 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070027756 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
27757
27758 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
27759 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
27760 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
27761
27762 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
27763 {
27764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27765 "%s: fail to allocate memory", __func__);
27766 return WDI_STATUS_MEM_FAILURE;
27767 }
27768
27769 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27770 (pNetwFoundParams->ssId.length < 32 )?
27771 pNetwFoundParams->ssId.length : 32;
27772 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27773 pNetwFoundParams->ssId.ssId,
27774 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27775 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27776 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27777 pNetwFoundParams->frameLength;
27778 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27779 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27780 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027781
27782 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027783 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027784
Jeff Johnson295189b2012-06-20 16:38:30 -070027785 // DEBUG
27786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027787 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027788 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027789 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027790 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027791 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027792 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27793
ltimariub77f24b2013-01-24 18:54:33 -080027794 if ( pWDICtx->wdiLowLevelIndCB )
27795 {
27796 /*Notify UMAC*/
27797 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27798 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027799
27800 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027801}
27802
27803/**
27804 @brief Process PNO Rsp function (called when a
27805 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027806
27807 @param pWDICtx: pointer to the WLAN DAL context
27808 pEventData: pointer to the event information structure
27809
Jeff Johnson295189b2012-06-20 16:38:30 -070027810 @see
27811 @return Result of the function call
27812*/
27813WDI_Status
27814WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027815(
Jeff Johnson295189b2012-06-20 16:38:30 -070027816 WDI_ControlBlockType* pWDICtx,
27817 WDI_EventInfoType* pEventData
27818)
27819{
27820 WDI_Status wdiStatus;
27821 eHalStatus halStatus;
27822 WDI_PNOScanCb wdiPNOScanCb = NULL;
27823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27824
27825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027827 -------------------------------------------------------------------------*/
27828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27829 ( NULL == pEventData->pEventData ))
27830 {
27831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027835 }
27836
27837
Jeff Johnsone7245742012-09-05 17:12:55 -070027838 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027839
27840 /*-------------------------------------------------------------------------
27841 Extract response and send it to UMAC
27842 -------------------------------------------------------------------------*/
27843 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027844 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027845
27846 /*Notify UMAC*/
27847 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27848
Jeff Johnsone7245742012-09-05 17:12:55 -070027849 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027850}/*WDI_ProcessSetPreferredNetworkRsp*/
27851
27852/**
27853 @brief Process RSSI Filter Rsp function (called when a
27854 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027855
27856 @param pWDICtx: pointer to the WLAN DAL context
27857 pEventData: pointer to the event information structure
27858
Jeff Johnson295189b2012-06-20 16:38:30 -070027859 @see
27860 @return Result of the function call
27861*/
27862WDI_Status
27863WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027864(
Jeff Johnson295189b2012-06-20 16:38:30 -070027865 WDI_ControlBlockType* pWDICtx,
27866 WDI_EventInfoType* pEventData
27867)
27868{
27869 WDI_Status wdiStatus;
27870 eHalStatus halStatus;
27871 WDI_RssiFilterCb wdiRssiFilterCb;
27872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27873
27874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027876 -------------------------------------------------------------------------*/
27877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27878 ( NULL == pEventData->pEventData ))
27879 {
27880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027884 }
27885
Jeff Johnsone7245742012-09-05 17:12:55 -070027886 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027887
27888 /*-------------------------------------------------------------------------
27889 Extract response and send it to UMAC
27890 -------------------------------------------------------------------------*/
27891 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027892 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027893
27894 /*Notify UMAC*/
27895 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27896
Jeff Johnsone7245742012-09-05 17:12:55 -070027897 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027898}/*WDI_ProcessSetRssiFilterRsp*/
27899
27900/**
27901 @brief Process Update Scan Params Rsp function (called when a
27902 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027903
27904 @param pWDICtx: pointer to the WLAN DAL context
27905 pEventData: pointer to the event information structure
27906
Jeff Johnson295189b2012-06-20 16:38:30 -070027907 @see
27908 @return Result of the function call
27909*/
27910WDI_Status
27911WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027912(
Jeff Johnson295189b2012-06-20 16:38:30 -070027913 WDI_ControlBlockType* pWDICtx,
27914 WDI_EventInfoType* pEventData
27915)
27916{
27917 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027918 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027919 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027920 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27922
27923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027925 -------------------------------------------------------------------------*/
27926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27927 ( NULL == pEventData->pEventData ))
27928 {
27929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027933 }
27934
27935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027936 "%s: Process UPD scan params ptr : %p",
27937 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027938
Jeff Johnsone7245742012-09-05 17:12:55 -070027939 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027940
27941 /*-------------------------------------------------------------------------
27942 Extract response and send it to UMAC
27943 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027944 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27945 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027946 sizeof(halUpdScanParams.status));
27947
27948 uStatus = halUpdScanParams.status;
27949
27950 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027951 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027952
27953 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027954 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027955
Jeff Johnsone7245742012-09-05 17:12:55 -070027956 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027957
27958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027959 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027960 halUpdScanParams.status);
27961
27962 /*Notify UMAC*/
27963 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27964
Jeff Johnsone7245742012-09-05 17:12:55 -070027965 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027966}
27967#endif // FEATURE_WLAN_SCAN_PNO
27968
27969#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027971WDI_8023MulticastListReq
27972(
27973 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27974 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27975 void* pUserData
27976)
27977{
27978 WDI_EventInfoType wdiEventData;
27979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27980
27981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027982 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027983
27984 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027985 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027986 ------------------------------------------------------------------------*/
27987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27988 {
27989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27990 "WDI API call before module is initialized - Fail request");
27991
Jeff Johnsone7245742012-09-05 17:12:55 -070027992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027993 }
27994
27995 /*------------------------------------------------------------------------
27996 Fill in Event data and post to the Main FSM
27997 ------------------------------------------------------------------------*/
27998 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027999 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028000 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028001 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028002 wdiEventData.pUserData = pUserData;
28003
28004 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28005}
28006
Jeff Johnsone7245742012-09-05 17:12:55 -070028007WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028008WDI_ReceiveFilterSetFilterReq
28009(
28010 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
28011 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
28012 void* pUserData
28013)
28014{
28015 WDI_EventInfoType wdiEventData;
28016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28017
28018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028019 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028020
28021 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028022 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028023 ------------------------------------------------------------------------*/
28024 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28025 {
28026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28027 "WDI API call before module is initialized - Fail request");
28028
Jeff Johnsone7245742012-09-05 17:12:55 -070028029 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028030 }
28031
28032 /*------------------------------------------------------------------------
28033 Fill in Event data and post to the Main FSM
28034 ------------------------------------------------------------------------*/
28035 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028036 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
28037 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070028038 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
28039 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028040 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028041 wdiEventData.pUserData = pUserData;
28042
28043
28044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28045}
28046
Jeff Johnsone7245742012-09-05 17:12:55 -070028047WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028048WDI_FilterMatchCountReq
28049(
28050 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
28051 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
28052 void* pUserData
28053)
28054{
28055 WDI_EventInfoType wdiEventData;
28056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28057
28058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028059 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028060
28061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028062 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028063 ------------------------------------------------------------------------*/
28064 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28065 {
28066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28067 "WDI API call before module is initialized - Fail request");
28068
Jeff Johnsone7245742012-09-05 17:12:55 -070028069 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028070 }
28071
28072 /*------------------------------------------------------------------------
28073 Fill in Event data and post to the Main FSM
28074 ------------------------------------------------------------------------*/
28075 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028076 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028077 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028078 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028079 wdiEventData.pUserData = pUserData;
28080
28081
28082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28083}
28084
Jeff Johnsone7245742012-09-05 17:12:55 -070028085WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028086WDI_ReceiveFilterClearFilterReq
28087(
28088 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
28089 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
28090 void* pUserData
28091)
28092{
28093 WDI_EventInfoType wdiEventData;
28094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28095
28096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028097 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028098
28099 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028100 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028101 ------------------------------------------------------------------------*/
28102 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28103 {
28104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28105 "WDI API call before module is initialized - Fail request");
28106
Jeff Johnsone7245742012-09-05 17:12:55 -070028107 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028108 }
28109
28110 /*------------------------------------------------------------------------
28111 Fill in Event data and post to the Main FSM
28112 ------------------------------------------------------------------------*/
28113 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028114 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028115 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028116 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028117 wdiEventData.pUserData = pUserData;
28118
28119
28120 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28121}
28122
28123/**
28124 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028125
28126 @param pWDICtx: pointer to the WLAN DAL context
28127 pEventData: pointer to the event information structure
28128
Jeff Johnson295189b2012-06-20 16:38:30 -070028129 @see
28130 @return Result of the function call
28131*/
28132WDI_Status
28133WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028134(
Jeff Johnson295189b2012-06-20 16:38:30 -070028135 WDI_ControlBlockType* pWDICtx,
28136 WDI_EventInfoType* pEventData
28137)
28138{
28139 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
28140 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028141 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028142 wpt_uint16 usDataOffset = 0;
28143 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028144 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028145 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070028146 wpt_uint8 ucCurrentBSSSesIdx = 0;
28147 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028148
28149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028150 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028151
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028152 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
28153 if( NULL == pRcvFltMcAddrListType )
28154 {
28155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28156 "Failed to alloc in WDI_Process8023MulticastListReq");
28157 return WDI_STATUS_E_FAILURE;
28158 }
28159
Jeff Johnson295189b2012-06-20 16:38:30 -070028160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028162 -------------------------------------------------------------------------*/
28163 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028164 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028165 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028166 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028167 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
28168 {
28169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028170 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028171 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028173 return WDI_STATUS_E_FAILURE;
28174 }
28175
28176 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28177 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
28178 &pBSSSes);
28179 if ( NULL == pBSSSes )
28180 {
28181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028182 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028183 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070028184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028185 }
28186
28187 /*-----------------------------------------------------------------------
28188 Get message buffer
28189 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028190 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28191 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028192 sizeof(tHalRcvFltMcAddrListType),
28193 &pSendBuffer, &usDataOffset, &usSendSize))||
28194 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
28195 {
28196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28197 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028198 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028199 pEventData, pwdiFltPktSetMcListReqParamsType,
28200 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070028201 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028204 }
28205
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028206 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070028207 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028208 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070028209 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028210 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070028211 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
28212 sizeof(tSirMacAddr));
28213 }
28214
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028215 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028216 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028217 pRcvFltMcAddrListType,
28218 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070028219
28220 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028221 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028222
28223
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028224 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028226 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028227 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028228 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028229 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028230 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028231}
28232
28233/**
28234 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028235
28236 @param pWDICtx: pointer to the WLAN DAL context
28237 pEventData: pointer to the event information structure
28238
Jeff Johnson295189b2012-06-20 16:38:30 -070028239 @see
28240 @return Result of the function call
28241*/
28242WDI_Status
28243WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028244(
Jeff Johnson295189b2012-06-20 16:38:30 -070028245 WDI_ControlBlockType* pWDICtx,
28246 WDI_EventInfoType* pEventData
28247)
28248{
28249 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
28250 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028251 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028252 wpt_uint16 usDataOffset = 0;
28253 wpt_uint16 usSendSize = 0;
28254 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028255 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028256 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070028257 wpt_uint8 ucCurrentBSSSesIdx = 0;
28258 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028259 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
28260 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070028261
28262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028263 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028264
28265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028267 -------------------------------------------------------------------------*/
28268 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028269 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070028270 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028271 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028272 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
28273 {
28274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028277 return WDI_STATUS_E_FAILURE;
28278 }
28279
28280 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28281 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
28282 &pBSSSes);
28283 if ( NULL == pBSSSes )
28284 {
28285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028286 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028288 }
28289
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028290 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
28291 {
Jeff Johnson295189b2012-06-20 16:38:30 -070028292
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028293 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
28294 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
28295 * sizeof(tHalSessionizedRcvPktFilterCfgType));
28296
28297 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
28298 usSessRcvPktFilterCfgSize);
28299
28300 if(NULL == pSessRcvPktFilterCfg)
28301 {
28302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28303 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028304 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028305 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028306 WDI_ASSERT(0);
28307 return WDI_STATUS_E_FAILURE;
28308 }
28309
28310 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
28311
28312 /*-----------------------------------------------------------------------
28313 Get message buffer
28314 -----------------------------------------------------------------------*/
28315
28316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
28317 usSessRcvPktFilterCfgSize,
28318 &pSendBuffer, &usDataOffset, &usSendSize))||
28319 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
28320 {
28321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28322 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028323 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028324 pEventData, pwdiSetRcvPktFilterReqInfo,
28325 wdiReceiveFilterSetFilterCb);
28326 WDI_ASSERT(0);
28327 wpalMemoryFree(pSessRcvPktFilterCfg);
28328 return WDI_STATUS_E_FAILURE;
28329 }
28330
28331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028332 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028333 usSendSize,pSessRcvPktFilterCfg);
28334
28335 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
28336 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
28337 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
28338 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
28339
28340 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
28341
28342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28343 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
28344 pSessRcvPktFilterCfg->filterType);
28345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28346 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
28347 pSessRcvPktFilterCfg->coleasceTime);
28348
28349 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
28350 {
28351 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
28352 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
28353 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
28354 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
28355 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
28356 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
28357 pSessRcvPktFilterCfg->paramsData[i].dataLength =
28358 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
28359
28360 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
28361 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
28362 8);
28363 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
28364 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
28365 8);
28366
28367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028368 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028369 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
28370 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
28371
28372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028373 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028374 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
28375 pSessRcvPktFilterCfg->paramsData[i].dataLength);
28376
28377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028378 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028379 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
28380 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
28381 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
28382 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
28383 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
28384 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
28385
28386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028387 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028388 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
28389 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
28390 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
28391 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
28392 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
28393 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
28394 }
28395
28396 wpalMemoryCopy( pSendBuffer+usDataOffset,
28397 pSessRcvPktFilterCfg,
28398 usSessRcvPktFilterCfgSize);
28399
28400
28401 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
28402 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
28403
28404 wpalMemoryFree(pSessRcvPktFilterCfg);
28405
28406 }
28407 /*If SLM_SESSIONIZATION is not supported then do this */
28408 else
28409 {
28410 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
28411 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
28412 * sizeof(tHalRcvPktFilterParams));
28413
28414 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070028415 usRcvPktFilterCfgSize);
28416
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028417 if(NULL == pRcvPktFilterCfg)
28418 {
28419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28420 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028421 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028422 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028423 WDI_ASSERT(0);
28424 return WDI_STATUS_E_FAILURE;
28425 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028426
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028427 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070028428
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028429 /*-----------------------------------------------------------------------
28430 Get message buffer
28431 -----------------------------------------------------------------------*/
28432 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028433 usRcvPktFilterCfgSize,
28434 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028435 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
28436 {
28437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070028438 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028439 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028440 pEventData, pwdiSetRcvPktFilterReqInfo,
28441 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028442 WDI_ASSERT(0);
28443 wpalMemoryFree(pRcvPktFilterCfg);
28444 return WDI_STATUS_E_FAILURE;
28445 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028446
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028448 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070028449 usSendSize,usRcvPktFilterCfgSize);
28450
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028451 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
28452 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
28453 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
28454 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070028455
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028457 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070028458 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070028460 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070028461 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070028462
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028463 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
28464 {
28465 pRcvPktFilterCfg->paramsData[i].protocolLayer =
28466 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
28467 pRcvPktFilterCfg->paramsData[i].cmpFlag =
28468 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
28469 pRcvPktFilterCfg->paramsData[i].dataOffset =
28470 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
28471 pRcvPktFilterCfg->paramsData[i].dataLength =
28472 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070028473
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028474 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070028475 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
28476 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028477 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070028478 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
28479 8);
28480
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 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070028483 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070028484 pRcvPktFilterCfg->paramsData[i].cmpFlag);
28485
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028487 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028488 pRcvPktFilterCfg->paramsData[i].dataOffset,
28489 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070028490
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028492 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028493 pRcvPktFilterCfg->paramsData[i].compareData[0],
28494 pRcvPktFilterCfg->paramsData[i].compareData[1],
28495 pRcvPktFilterCfg->paramsData[i].compareData[2],
28496 pRcvPktFilterCfg->paramsData[i].compareData[3],
28497 pRcvPktFilterCfg->paramsData[i].compareData[4],
28498 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070028499
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028501 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028502 pRcvPktFilterCfg->paramsData[i].dataMask[0],
28503 pRcvPktFilterCfg->paramsData[i].dataMask[1],
28504 pRcvPktFilterCfg->paramsData[i].dataMask[2],
28505 pRcvPktFilterCfg->paramsData[i].dataMask[3],
28506 pRcvPktFilterCfg->paramsData[i].dataMask[4],
28507 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
28508 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028509
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028510 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070028511 pRcvPktFilterCfg,
28512 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070028513
28514
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028515 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
28516 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028517
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028519 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028520 wpalMemoryFree(pRcvPktFilterCfg);
28521 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028523 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028524 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028525 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028526 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028527 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028528}
28529
28530/**
28531 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028532
28533 @param pWDICtx: pointer to the WLAN DAL context
28534 pEventData: pointer to the event information structure
28535
Jeff Johnson295189b2012-06-20 16:38:30 -070028536 @see
28537 @return Result of the function call
28538*/
28539WDI_Status
28540WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028541(
Jeff Johnson295189b2012-06-20 16:38:30 -070028542 WDI_ControlBlockType* pWDICtx,
28543 WDI_EventInfoType* pEventData
28544)
28545{
28546 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
28547 NULL;
28548 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
28549 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028550 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028551 wpt_uint16 usDataOffset = 0;
28552 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028553 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
28554 wpt_uint8 ucCurrentBSSSesIdx = 0;
28555 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028556
28557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028558 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028559
28560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028562 -------------------------------------------------------------------------*/
28563 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028564 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028565 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028566 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028567 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
28568 {
28569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028573 }
28574
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028575 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28576 pwdiRcvFltPktMatchCntReqParamsType->bssId,
28577 &pBSSSes);
28578 if ( NULL == pBSSSes )
28579 {
28580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028581 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028582 return WDI_STATUS_E_FAILURE;
28583 }
28584
Jeff Johnson295189b2012-06-20 16:38:30 -070028585 /*-----------------------------------------------------------------------
28586 Get message buffer
28587 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028588 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28589 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028590 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028591 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028592 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028593 {
28594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28595 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028596 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028597 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
28598 wdiFilterMatchCountCb);
28599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028601 }
28602
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028603 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
28604 wpalMemoryCopy( pSendBuffer+usDataOffset,
28605 &rcvFltPktMatchCntReqParam,
28606 sizeof(rcvFltPktMatchCntReqParam));
28607
Jeff Johnson295189b2012-06-20 16:38:30 -070028608 //
28609 // Don't need to fill send buffer other than header
28610 //
28611 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028612 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028613
28614
28615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028616 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28619 wdiFilterMatchCountCb,
28620 pEventData->pUserData,
28621 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028622}
28623
28624/**
28625 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028626
28627 @param pWDICtx: pointer to the WLAN DAL context
28628 pEventData: pointer to the event information structure
28629
Jeff Johnson295189b2012-06-20 16:38:30 -070028630 @see
28631 @return Result of the function call
28632*/
28633WDI_Status
28634WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028635(
Jeff Johnson295189b2012-06-20 16:38:30 -070028636 WDI_ControlBlockType* pWDICtx,
28637 WDI_EventInfoType* pEventData
28638)
Jeff Johnsone7245742012-09-05 17:12:55 -070028639{
Jeff Johnson295189b2012-06-20 16:38:30 -070028640 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
28641 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028643 wpt_uint16 usDataOffset = 0;
28644 wpt_uint16 usSendSize = 0;
28645 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028646 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070028647 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028648
28649 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028650 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028651
28652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028654 -------------------------------------------------------------------------*/
28655 if (( NULL == pEventData ) ||
28656 ( NULL == (pwdiRcvFltPktClearReqParamsType =
28657 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028658 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028659 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
28660 {
28661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028662 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028664 return WDI_STATUS_E_FAILURE;
28665 }
28666
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028667 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028668 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
28669 &pBSSSes);
28670 if ( NULL == pBSSSes )
28671 {
28672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028673 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028675 }
28676
28677 /*-----------------------------------------------------------------------
28678 Get message buffer
28679 -----------------------------------------------------------------------*/
28680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028681 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028682 sizeof(tHalRcvFltPktClearParam),
28683 &pSendBuffer, &usDataOffset, &usSendSize))||
28684 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
28685 {
28686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28687 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028688 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028689 pEventData, pwdiRcvFltPktClearReqParamsType,
28690 wdiRcvFltPktClearFilterCb);
28691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028693 }
28694
28695
28696 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028697 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070028698 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028699 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070028700
Jeff Johnsone7245742012-09-05 17:12:55 -070028701 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
28702 wpalMemoryCopy( pSendBuffer+usDataOffset,
28703 &rcvFltPktClearParam,
28704 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070028705
28706 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028707 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028708
28709
28710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028711 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028712 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028713 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028714 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028715 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028716}
28717
28718/**
28719 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028720
28721 @param pWDICtx: pointer to the WLAN DAL context
28722 pEventData: pointer to the event information structure
28723
Jeff Johnson295189b2012-06-20 16:38:30 -070028724 @see
28725 @return Result of the function call
28726*/
28727WDI_Status
28728WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028729(
Jeff Johnson295189b2012-06-20 16:38:30 -070028730 WDI_ControlBlockType* pWDICtx,
28731 WDI_EventInfoType* pEventData
28732)
28733{
Jeff Johnson295189b2012-06-20 16:38:30 -070028734 eHalStatus halStatus;
28735 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028736 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
28737 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28739
28740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028741 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028742
28743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028745 -------------------------------------------------------------------------*/
28746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28747 ( NULL == pEventData->pEventData ))
28748 {
28749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028753 }
28754
Jeff Johnsone7245742012-09-05 17:12:55 -070028755 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028756
28757 /*-------------------------------------------------------------------------
28758 Extract response and send it to UMAC
28759 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028760 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28761 {
28762 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
28763 pEventData->pEventData,
28764 sizeof(halRcvFltPktSetMcListRsp));
28765
28766 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28767 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28768 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28769 halRcvFltPktSetMcListRsp.bssIdx;
28770 }
28771 else
28772 {
28773 halStatus = *((eHalStatus*)pEventData->pEventData);
28774 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28775 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028776
28777 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028778 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028779
Jeff Johnsone7245742012-09-05 17:12:55 -070028780 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028781}
28782
28783/**
28784 @brief Process Set Rsp function (called when a
28785 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028786
28787 @param pWDICtx: pointer to the WLAN DAL context
28788 pEventData: pointer to the event information structure
28789
Jeff Johnson295189b2012-06-20 16:38:30 -070028790 @see
28791 @return Result of the function call
28792*/
28793WDI_Status
28794WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028795(
Jeff Johnson295189b2012-06-20 16:38:30 -070028796 WDI_ControlBlockType* pWDICtx,
28797 WDI_EventInfoType* pEventData
28798)
28799{
Jeff Johnson295189b2012-06-20 16:38:30 -070028800 eHalStatus halStatus;
28801 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028802 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28803 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28805
28806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028807 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028808
28809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028811 -------------------------------------------------------------------------*/
28812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28813 ( NULL == pEventData->pEventData ))
28814 {
28815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028819 }
28820
28821 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028822 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028823
28824 /*-------------------------------------------------------------------------
28825 Extract response and send it to UMAC
28826 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028827 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28828 {
28829 wpalMemoryCopy( &halSetPktFilterRspParams,
28830 pEventData->pEventData,
28831 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028832
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028833 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28834 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28835 }
28836 else
28837 {
28838 halStatus = *((eHalStatus*)pEventData->pEventData);
28839 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28840 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028841 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028842 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028843
Jeff Johnsone7245742012-09-05 17:12:55 -070028844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028845}
28846
28847/**
28848 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028849
28850 @param pWDICtx: pointer to the WLAN DAL context
28851 pEventData: pointer to the event information structure
28852
Jeff Johnson295189b2012-06-20 16:38:30 -070028853 @see
28854 @return Result of the function call
28855*/
28856WDI_Status
28857WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028858(
Jeff Johnson295189b2012-06-20 16:38:30 -070028859 WDI_ControlBlockType* pWDICtx,
28860 WDI_EventInfoType* pEventData
28861)
28862{
Jeff Johnson295189b2012-06-20 16:38:30 -070028863 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028864 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028865 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28866 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028867
28868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28869
28870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028871 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028872
28873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028875 -------------------------------------------------------------------------*/
28876 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28877 ( NULL == pEventData->pEventData ))
28878 {
28879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028883 }
28884
Jeff Johnsone7245742012-09-05 17:12:55 -070028885 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028886
28887 /*-------------------------------------------------------------------------
28888 Extract response and send it to UMAC
28889 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028890 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28891 {
28892 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28893 pEventData->pEventData,
28894 sizeof(halRcvFltrPktMatachRsp));
28895
28896 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28897 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28898 }
28899 else
28900 {
28901 halStatus = *((eHalStatus*)pEventData->pEventData);
28902 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28903 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028904
28905 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028906 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028907
Jeff Johnsone7245742012-09-05 17:12:55 -070028908 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028909}
28910
28911/**
28912 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028913
28914 @param pWDICtx: pointer to the WLAN DAL context
28915 pEventData: pointer to the event information structure
28916
Jeff Johnson295189b2012-06-20 16:38:30 -070028917 @see
28918 @return Result of the function call
28919*/
28920WDI_Status
28921WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028922(
Jeff Johnson295189b2012-06-20 16:38:30 -070028923 WDI_ControlBlockType* pWDICtx,
28924 WDI_EventInfoType* pEventData
28925)
28926{
Jeff Johnson295189b2012-06-20 16:38:30 -070028927 eHalStatus halStatus;
28928 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028929 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28930 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28932
28933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028934 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028935
28936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028938 -------------------------------------------------------------------------*/
28939 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28940 ( NULL == pEventData->pEventData ))
28941 {
28942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028946 }
28947
28948 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028949 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028950
28951 /*-------------------------------------------------------------------------
28952 Extract response and send it to UMAC
28953 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028954 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28955 {
28956 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28957 pEventData->pEventData,
28958 sizeof(halRcvFltPktClearRspMsg));
28959
28960 wdiRcvFltPktClearRspParamsType.wdiStatus =
28961 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28962 wdiRcvFltPktClearRspParamsType.bssIdx =
28963 halRcvFltPktClearRspMsg.bssIdx;
28964 }
28965 else
28966 {
28967 halStatus = *((eHalStatus*)pEventData->pEventData);
28968 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28969 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028970
28971 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028972 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028973
Jeff Johnsone7245742012-09-05 17:12:55 -070028974 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028975}
28976#endif // WLAN_FEATURE_PACKET_FILTERING
28977
28978/**
28979 @brief Process Shutdown Rsp function
28980 There is no shutdown response comming from HAL
28981 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028982
Jeff Johnson295189b2012-06-20 16:38:30 -070028983 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028984 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028985
28986 @see
28987 @return Result of the function call
28988*/
28989WDI_Status
28990WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028991(
Jeff Johnson295189b2012-06-20 16:38:30 -070028992 WDI_ControlBlockType* pWDICtx,
28993 WDI_EventInfoType* pEventData
28994)
28995{
28996 /*There is no shutdown response comming from HAL - function just kept for
28997 simmetry */
28998 WDI_ASSERT(0);
28999 return WDI_STATUS_SUCCESS;
29000}/*WDI_ProcessShutdownRsp*/
29001
29002/**
29003 @brief WDI_SetPowerParamsReq
29004
Jeff Johnsone7245742012-09-05 17:12:55 -070029005 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070029006 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070029007
Jeff Johnson295189b2012-06-20 16:38:30 -070029008 wdiPowerParamsCb: callback for passing back the response
29009 of the Set Power Params operation received from the
29010 device
Jeff Johnsone7245742012-09-05 17:12:55 -070029011
Jeff Johnson295189b2012-06-20 16:38:30 -070029012 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070029013 callback
29014
Jeff Johnson295189b2012-06-20 16:38:30 -070029015 @return Result of the function call
29016*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029017WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070029018WDI_SetPowerParamsReq
29019(
29020 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
29021 WDI_SetPowerParamsCb wdiPowerParamsCb,
29022 void* pUserData
29023)
29024{
29025 WDI_EventInfoType wdiEventData;
29026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29027
29028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029029 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070029030 ------------------------------------------------------------------------*/
29031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29032 {
29033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29034 "WDI API call before module is initialized - Fail request");
29035
Jeff Johnsone7245742012-09-05 17:12:55 -070029036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070029037 }
29038
29039 /*------------------------------------------------------------------------
29040 Fill in Event data and post to the Main FSM
29041 ------------------------------------------------------------------------*/
29042 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070029043 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029044 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070029045 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070029046 wdiEventData.pUserData = pUserData;
29047
29048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29049}/*WDI_SetPowerParamsReq*/
29050
29051/**
29052 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070029053
29054 @param pWDICtx: pointer to the WLAN DAL context
29055 pEventData: pointer to the event information structure
29056
Jeff Johnson295189b2012-06-20 16:38:30 -070029057 @see
29058 @return Result of the function call
29059*/
29060WDI_Status
29061WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070029062(
Jeff Johnson295189b2012-06-20 16:38:30 -070029063 WDI_ControlBlockType* pWDICtx,
29064 WDI_EventInfoType* pEventData
29065)
29066{
29067 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
29068 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070029069 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029070 wpt_uint16 usDataOffset = 0;
29071 wpt_uint16 usSendSize = 0;
29072 tSetPowerParamsType powerParams;
29073
29074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029076 -------------------------------------------------------------------------*/
29077 if (( NULL == pEventData ) ||
29078 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
29079 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
29080 {
29081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029085 }
29086
29087 /*-----------------------------------------------------------------------
29088 Get message buffer
29089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070029091 sizeof(powerParams),
29092 &pSendBuffer, &usDataOffset, &usSendSize))||
29093 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
29094 {
29095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029096 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029097 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
29098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029100 }
29101
29102 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070029103 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070029104 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
29105
29106 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029107 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070029108 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
29109
29110 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070029111 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070029112 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
29113
29114 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070029115 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070029116 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
29117
29118 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070029119 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070029120 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
29121
29122 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070029123 powerParams.uBETInterval =
29124 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070029125
Yue Mac24062f2013-05-13 17:01:29 -070029126 /* MAX LI for modulated DTIM */
29127 powerParams.uMaxLIModulatedDTIM =
29128 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070029129
29130 wpalMemoryCopy( pSendBuffer+usDataOffset,
29131 &powerParams,
29132 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029133
29134 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070029135 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029136
29137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029138 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29141 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029142}
29143
29144/**
29145 @brief Process Power Params Rsp function (called when a
29146 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070029147
29148 @param pWDICtx: pointer to the WLAN DAL context
29149 pEventData: pointer to the event information structure
29150
Jeff Johnson295189b2012-06-20 16:38:30 -070029151 @see
29152 @return Result of the function call
29153*/
29154WDI_Status
29155WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029156(
Jeff Johnson295189b2012-06-20 16:38:30 -070029157 WDI_ControlBlockType* pWDICtx,
29158 WDI_EventInfoType* pEventData
29159)
29160{
29161 WDI_Status wdiStatus;
29162 eHalStatus halStatus;
29163 WDI_SetPowerParamsCb wdiPowerParamsCb;
29164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29165
29166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029168 -------------------------------------------------------------------------*/
29169 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29170 ( NULL == pEventData->pEventData ))
29171 {
29172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029176 }
29177
Jeff Johnsone7245742012-09-05 17:12:55 -070029178 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029179
29180 /*-------------------------------------------------------------------------
29181 Extract response and send it to UMAC
29182 -------------------------------------------------------------------------*/
29183 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070029184 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070029185
29186 /*Notify UMAC*/
29187 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29188
Jeff Johnsone7245742012-09-05 17:12:55 -070029189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029190}/*WDI_ProcessSetPowerParamsRsp*/
29191
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029192/**
29193 @brief WDI_dhcpStartInd
29194 Host will send an event to the FW when DHCP is initiated
29195
29196 @param
29197 WDI_DHCPInd: DHCP Indication
29198 @see
29199 @return Result of the function call
29200*/
29201WDI_Status
29202WDI_dhcpStartInd
29203(
29204 WDI_DHCPInd *wdiDHCPInd
29205)
29206{
29207 WDI_EventInfoType wdiEventData;
29208
29209 /*------------------------------------------------------------------------
29210 Sanity Check
29211 ------------------------------------------------------------------------*/
29212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29213 {
29214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29215 "WDI API call before module is initialized - Fail request");
29216
29217 return WDI_STATUS_E_NOT_ALLOWED;
29218 }
29219
29220 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
29221 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053029222 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029223 wdiEventData.pCBfnc = NULL;
29224 wdiEventData.pUserData = NULL;
29225
29226 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29227}
29228
29229
29230/**
29231 @brief WDI_dhcpStopInd
29232 Host will send an event to the FW when DHCP is completed
29233
29234 @param
29235 WDI_DHCPInd: DHCP Indication
29236 @see
29237 @return Result of the function call
29238*/
29239WDI_Status
29240WDI_dhcpStopInd
29241(
29242 WDI_DHCPInd *wdiDHCPInd
29243)
29244{
29245 WDI_EventInfoType wdiEventData;
29246
29247 /*------------------------------------------------------------------------
29248 Sanity Check
29249 ------------------------------------------------------------------------*/
29250 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29251 {
29252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29253 "WDI API call before module is initialized - Fail request");
29254
29255 return WDI_STATUS_E_NOT_ALLOWED;
29256 }
29257
29258 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
29259 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053029260 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029261 wdiEventData.pCBfnc = NULL;
29262 wdiEventData.pUserData = NULL;
29263
29264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29265}
29266
Abhishek Singh7cd040e2016-01-07 10:51:04 +053029267#ifdef WLAN_FEATURE_RMC
29268/**
29269 @brief WDI_TXFailMonitorInd
29270 Host will send an event to the FW to start TX Fail Monitor
29271
29272 @param
29273 WDI_TXFailMonitorInd
29274 @see
29275 @return Result of the function call
29276*/
29277WDI_Status
29278WDI_TXFailMonitorStartStopInd
29279(
29280 WDI_TXFailMonitorInd *wdiTXFailMonitorInd
29281)
29282{
29283 WDI_EventInfoType wdiEventData;
29284
29285 /*------------------------------------------------------------------------
29286 Sanity Check
29287 ------------------------------------------------------------------------*/
29288 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29289 {
29290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29291 "WDI API call before module is initialized - Fail request");
29292
29293 return WDI_STATUS_E_NOT_ALLOWED;
29294 }
29295
29296 wdiEventData.wdiRequest = WDI_TX_FAIL_MONITOR_IND;
29297 wdiEventData.pEventData = wdiTXFailMonitorInd;
29298 wdiEventData.uEventDataSize = sizeof(wdiTXFailMonitorInd);
29299 wdiEventData.pCBfnc = NULL;
29300 wdiEventData.pUserData = NULL;
29301
29302 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29303}
29304#endif /* WLAN_FEATURE_RMC */
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029305
29306/**
29307 @brief Process DHCP Start Indication message and post it to HAL
29308
29309 @param pWDICtx: pointer to the WLAN DAL context
29310 pEventData: pointer to the event information structure
29311
29312 @see
29313 @return Result of the function call
29314*/
29315WDI_Status
29316WDI_ProcessDHCPStartInd
29317(
29318 WDI_ControlBlockType* pWDICtx,
29319 WDI_EventInfoType* pEventData
29320)
29321{
29322 wpt_uint8* pSendBuffer = NULL;
29323 wpt_uint16 usDataOffset = 0;
29324 wpt_uint16 usSendSize = 0;
29325 wpt_uint16 usLen = 0;
29326 WDI_DHCPInd* pwdiDHCPInd = NULL;
29327 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053029328 WDI_Status wdiStatus;
29329
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029330
29331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29332
29333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29334 "%s", __func__);
29335
29336 /*-------------------------------------------------------------------------
29337 Sanity check
29338 -------------------------------------------------------------------------*/
29339 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29340 {
29341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29342 "%s: Invalid parameters", __func__);
29343 WDI_ASSERT(0);
29344 return WDI_STATUS_E_FAILURE;
29345 }
29346 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
29347 /*-----------------------------------------------------------------------
29348 Get message buffer
29349 -----------------------------------------------------------------------*/
29350
29351 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29352 WDI_DHCP_START_IND,
29353 sizeof(tDHCPInfo),
29354 &pSendBuffer, &usDataOffset, &usSendSize))||
29355 ( usSendSize < (usDataOffset + usLen )))
29356 {
29357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29358 "Unable to get send buffer in DHCP Start req %p ",
29359 pEventData);
29360 WDI_ASSERT(0);
29361 return WDI_STATUS_E_FAILURE;
29362 }
29363
Sandeep Puligillaee789512014-02-13 19:14:52 +053029364 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029365 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
29366 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
29367 WDI_MAC_ADDR_LEN);
29368
29369 pWDICtx->pReqStatusUserData = NULL;
29370 pWDICtx->pfncRspCB = NULL;
29371
29372 /*-------------------------------------------------------------------------
29373 Send DHCP Start Indication to HAL
29374 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053029375 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29376 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029377}/*WDI_ProcessDHCPStartInd*/
29378
29379/**
29380 @brief Process DHCP Stop indication message and post it to HAL
29381
29382 @param pWDICtx: pointer to the WLAN DAL context
29383 pEventData: pointer to the event information structure
29384
29385 @see
29386 @return Result of the function call
29387*/
29388WDI_Status
29389WDI_ProcessDHCPStopInd
29390(
29391 WDI_ControlBlockType* pWDICtx,
29392 WDI_EventInfoType* pEventData
29393)
29394{
29395 wpt_uint8* pSendBuffer = NULL;
29396 wpt_uint16 usDataOffset = 0;
29397 wpt_uint16 usSendSize = 0;
29398 wpt_uint16 usLen = 0;
29399 WDI_DHCPInd* pwdiDHCPInd = NULL;
29400 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053029401 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029402
29403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29404
29405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29406 "%s", __func__);
29407
29408 /*-------------------------------------------------------------------------
29409 Sanity check
29410 -------------------------------------------------------------------------*/
29411
29412 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29413 {
29414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29415 "%s: Invalid parameters", __func__);
29416 WDI_ASSERT(0);
29417 return WDI_STATUS_E_FAILURE;
29418 }
29419 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
29420 /*-----------------------------------------------------------------------
29421 Get message buffer
29422 -----------------------------------------------------------------------*/
29423
29424 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29425 WDI_DHCP_STOP_IND,
29426 sizeof(tDHCPInfo),
29427 &pSendBuffer, &usDataOffset, &usSendSize))||
29428 ( usSendSize < (usDataOffset + usLen )))
29429 {
29430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29431 "Unable to get send buffer in DHCP Start req %p ",
29432 pEventData);
29433 WDI_ASSERT(0);
29434 return WDI_STATUS_E_FAILURE;
29435 }
29436
Sandeep Puligillaee789512014-02-13 19:14:52 +053029437 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029438 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
29439 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
29440 WDI_MAC_ADDR_LEN);
29441
29442 pWDICtx->pReqStatusUserData = NULL;
29443 pWDICtx->pfncRspCB = NULL;
29444 /*-------------------------------------------------------------------------
29445 Send DHCP Stop indication to HAL
29446 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053029447 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29448 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029449
29450}/*WDI_ProcessDHCPStopInd*/
29451
Abhishek Singh7cd040e2016-01-07 10:51:04 +053029452#ifdef WLAN_FEATURE_RMC
29453/**
29454 @brief Process TX Fail monitor indication
29455
29456 @param pWDICtx: pointer to the WLAN DAL context
29457 pEventData: pointer to the event information structure
29458
29459 @see
29460 @return Result of the function call
29461*/
29462WDI_Status
29463WDI_ProcessTXFailMonitor
29464(
29465 WDI_ControlBlockType* pWDICtx,
29466 WDI_EventInfoType* pEventData
29467)
29468{
29469 wpt_uint8* pSendBuffer = NULL;
29470 wpt_uint16 usDataOffset = 0;
29471 wpt_uint16 usSendSize = 0;
29472 wpt_uint16 usLen = 0;
29473 WDI_TXFailMonitorInd* pwdiTxFailMonitorInd = NULL;
29474 tTXFailMonitorInfo* pTXFailMonitorInfo;
29475 WDI_Status wdiStatus;
29476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29477
29478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29479 "%s", __func__);
29480
29481 /*-------------------------------------------------------------------------
29482 Sanity check
29483 -------------------------------------------------------------------------*/
29484
29485 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29486 {
29487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29488 "%s: Invalid parameters", __func__);
29489 WDI_ASSERT(0);
29490 return WDI_STATUS_E_FAILURE;
29491 }
29492 pwdiTxFailMonitorInd = (WDI_TXFailMonitorInd*)pEventData->pEventData;
29493 /*-----------------------------------------------------------------------
29494 Get message buffer
29495 -----------------------------------------------------------------------*/
29496
29497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29498 WDI_TX_FAIL_MONITOR_IND,
29499 sizeof(tDHCPInfo),
29500 &pSendBuffer, &usDataOffset, &usSendSize))||
29501 ( usSendSize < (usDataOffset + usLen )))
29502 {
29503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29504 "Unable to get send buffer in DHCP Start req %p ",
29505 pEventData);
29506 WDI_ASSERT(0);
29507 return WDI_STATUS_E_FAILURE;
29508 }
29509
29510 pTXFailMonitorInfo = (tTXFailMonitorInfo*)pSendBuffer+usDataOffset;
29511 pTXFailMonitorInfo->tx_fail_count = pwdiTxFailMonitorInd->tx_fail_count;
29512
29513 pWDICtx->pReqStatusUserData = pwdiTxFailMonitorInd->pUserData;
29514 pWDICtx->wdiReqStatusCB = pwdiTxFailMonitorInd->wdiReqStatusCB;
29515 /*-------------------------------------------------------------------------
29516 Send TX Fail Monitor start/stop indication to HAL
29517 -------------------------------------------------------------------------*/
29518 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29519
29520 return (wdiStatus != WDI_STATUS_SUCCESS)?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29521}/*WDI_ProcessTXFailMonitor*/
29522#endif /* WLAN_FEATURE_RMC */
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029523
Jeff Johnson295189b2012-06-20 16:38:30 -070029524#ifdef WLAN_FEATURE_GTK_OFFLOAD
29525/**
29526 @brief WDI_GTKOffloadReq will be called when the upper MAC
29527 wants to set GTK Rekey Counter while in power save. Upon
29528 the call of this API the WLAN DAL will pack and send a
29529 HAL GTK offload request message to the lower RIVA
29530 sub-system if DAL is in state STARTED.
29531
29532 In state BUSY this request will be queued. Request won't
29533 be allowed in any other state.
29534
29535 WDI_PostAssocReq must have been called.
29536
29537 @param pwdiGtkOffloadParams: the GTK offload as specified
29538 by the Device Interface
29539
29540 wdiGtkOffloadCb: callback for passing back the response
29541 of the GTK offload operation received from the device
29542
29543 pUserData: user data will be passed back with the
29544 callback
29545
29546 @see WDI_PostAssocReq
29547 @return Result of the function call
29548*/
29549WDI_Status
29550WDI_GTKOffloadReq
29551(
29552 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
29553 WDI_GtkOffloadCb wdiGtkOffloadCb,
29554 void* pUserData
29555)
29556{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029557 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29559
29560 /*------------------------------------------------------------------------
29561 Sanity Check
29562 ------------------------------------------------------------------------*/
29563 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29564 {
29565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29566 "WDI API call before module is initialized - Fail request");
29567
29568 return WDI_STATUS_E_NOT_ALLOWED;
29569 }
29570
29571 /*------------------------------------------------------------------------
29572 Fill in Event data and post to the Main FSM
29573 ------------------------------------------------------------------------*/
29574 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
29575 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070029576 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070029577 wdiEventData.pCBfnc = wdiGtkOffloadCb;
29578 wdiEventData.pUserData = pUserData;
29579
29580 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29581}
29582
29583
29584/**
29585 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
29586 MAC wants to get GTK Rekey Counter while in power save.
29587 Upon the call of this API the WLAN DAL will pack and
29588 send a HAL GTK offload request message to the lower RIVA
29589 sub-system if DAL is in state STARTED.
29590
29591 In state BUSY this request will be queued. Request won't
29592 be allowed in any other state.
29593
29594 WDI_PostAssocReq must have been called.
29595
29596 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
29597 Information Message as specified by the
29598 Device Interface
29599
29600 wdiGtkOffloadGetInfoCb: callback for passing back the
29601 response of the GTK offload operation received from the
29602 device
29603
29604 pUserData: user data will be passed back with the
29605 callback
29606
29607 @see WDI_PostAssocReq
29608 @return Result of the function call
29609*/
29610WDI_Status
29611WDI_GTKOffloadGetInfoReq
29612(
29613 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
29614 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
29615 void* pUserData
29616)
29617{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029618 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29620
29621 /*------------------------------------------------------------------------
29622 Sanity Check
29623 ------------------------------------------------------------------------*/
29624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29625 {
29626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29627 "WDI API call before module is initialized - Fail request");
29628
29629 return WDI_STATUS_E_NOT_ALLOWED;
29630 }
29631
29632 /*------------------------------------------------------------------------
29633 Fill in Event data and post to the Main FSM
29634 ------------------------------------------------------------------------*/
29635 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
29636 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
29637 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
29638 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
29639 wdiEventData.pUserData = pUserData;
29640
29641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29642}
29643
29644
29645/**
29646 @brief Process set GTK Offload Request function
29647
29648 @param pWDICtx: pointer to the WLAN DAL context
29649 pEventData: pointer to the event information structure
29650
29651 @see
29652 @return Result of the function call
29653*/
29654WDI_Status
29655WDI_ProcessGTKOffloadReq
29656(
29657 WDI_ControlBlockType* pWDICtx,
29658 WDI_EventInfoType* pEventData
29659)
29660{
29661 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
29662 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
29663 wpt_uint8* pSendBuffer = NULL;
29664 wpt_uint16 usDataOffset = 0;
29665 wpt_uint16 usSendSize = 0;
29666 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029667 wpt_uint8 ucCurrentSessionId = 0;
29668 WDI_BSSSessionType* pBSSSes = NULL;
29669
Jeff Johnson295189b2012-06-20 16:38:30 -070029670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29671
29672 /*-------------------------------------------------------------------------
29673 Sanity check
29674 -------------------------------------------------------------------------*/
29675 if (( NULL == pEventData ) ||
29676 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
29677 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
29678 {
29679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029681 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029682 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029683 }
29684
29685 /*-----------------------------------------------------------------------
29686 Get message buffer
29687 -----------------------------------------------------------------------*/
29688 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
29689 sizeof(gtkOffloadReqParams),
29690 &pSendBuffer, &usDataOffset, &usSendSize))||
29691 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
29692 {
29693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029694 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029695 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
29696 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029697 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029698 }
29699
29700 //
29701 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
29702 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029703 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29704 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
29705 &pBSSSes);
29706 if ( NULL == pBSSSes )
29707 {
29708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029709 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029710 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029711 }
29712
29713 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
29714
Jeff Johnson295189b2012-06-20 16:38:30 -070029715 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
29716 // Copy KCK
29717 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
29718 // Copy KEK
29719 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
29720 // Copy KeyReplayCounter
29721 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
29722
29723 wpalMemoryCopy( pSendBuffer+usDataOffset,
29724 &gtkOffloadReqParams,
29725 sizeof(gtkOffloadReqParams));
29726
29727 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
29728 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
29729
29730 /*-------------------------------------------------------------------------
29731 Send Get STA Request to HAL
29732 -------------------------------------------------------------------------*/
29733 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29734 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029735
29736fail:
29737 // Release the message buffer so we don't leak
29738 wpalMemoryFree(pSendBuffer);
29739
29740failRequest:
29741 //WDA should have failure check to avoid the memory leak
29742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029743}
29744
29745
29746/**
29747 @brief Process GTK Offload Get Information Request function
29748
29749 @param pWDICtx: pointer to the WLAN DAL context
29750 pEventData: pointer to the event information structure
29751
29752 @see
29753 @return Result of the function call
29754*/
29755WDI_Status
29756WDI_ProcessGTKOffloadGetInfoReq
29757(
29758 WDI_ControlBlockType* pWDICtx,
29759 WDI_EventInfoType* pEventData
29760)
29761{
29762 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
29763 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
29764 wpt_uint8* pSendBuffer = NULL;
29765 wpt_uint16 usDataOffset = 0;
29766 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029767 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
29768 wpt_uint8 ucCurrentSessionId = 0;
29769 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029770
29771 /*-------------------------------------------------------------------------
29772 Sanity check
29773 -------------------------------------------------------------------------*/
29774 if (( NULL == pEventData ) ||
29775 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
29776 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
29777 {
29778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029780 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029781 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029782 }
29783
29784 /*-----------------------------------------------------------------------
29785 Get message buffer
29786 -----------------------------------------------------------------------*/
29787 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029788 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029789 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029790 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029791 {
29792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029793 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029794 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
29795 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029796 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029797 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029798 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29799 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
29800 &pBSSSes);
29801 if ( NULL == pBSSSes )
29802 {
29803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029804 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029805 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029806 }
29807 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070029808
29809 //
29810 // Don't need to fill send buffer other than header
29811 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029812 wpalMemoryCopy( pSendBuffer+usDataOffset,
29813 &halGtkOffloadGetInfoReqParams,
29814 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029815
29816 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
29817 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
29818
29819 /*-------------------------------------------------------------------------
29820 Send Get STA Request to HAL
29821 -------------------------------------------------------------------------*/
29822 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29823 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029824fail:
29825 // Release the message buffer so we don't leak
29826 wpalMemoryFree(pSendBuffer);
29827
29828failRequest:
29829 //WDA should have failure check to avoid the memory leak
29830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029831}
29832
29833/**
29834 @brief Process host offload Rsp function (called when a
29835 response is being received over the bus from HAL)
29836
29837 @param pWDICtx: pointer to the WLAN DAL context
29838 pEventData: pointer to the event information structure
29839
29840 @see
29841 @return Result of the function call
29842*/
29843WDI_Status
29844WDI_ProcessGtkOffloadRsp
29845(
29846 WDI_ControlBlockType* pWDICtx,
29847 WDI_EventInfoType* pEventData
29848)
29849{
Jeff Johnson295189b2012-06-20 16:38:30 -070029850 eHalStatus halStatus;
29851 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029852 tHalGtkOffloadRspParams halGtkOffloadRspParams;
29853 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029854
29855 /*-------------------------------------------------------------------------
29856 Sanity check
29857 -------------------------------------------------------------------------*/
29858 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29859 ( NULL == pEventData->pEventData))
29860 {
29861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029862 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029863 WDI_ASSERT(0);
29864 return WDI_STATUS_E_FAILURE;
29865 }
29866
Wilson Yang00256342013-10-10 23:13:38 -070029867 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
29868
Jeff Johnson295189b2012-06-20 16:38:30 -070029869 /*-------------------------------------------------------------------------
29870 Extract response and send it to UMAC
29871 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029872 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29873 {
29874 wpalMemoryCopy( &halGtkOffloadRspParams,
29875 pEventData->pEventData,
29876 sizeof(halGtkOffloadRspParams));
29877
29878 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029879 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029880 wdiGtkOffloadRsparams.bssIdx =
29881 halGtkOffloadRspParams.bssIdx;
29882 }
29883 else
29884 {
29885 halStatus = *((eHalStatus*)pEventData->pEventData);
29886 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29887 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029888
29889 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029890 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029891
29892 return WDI_STATUS_SUCCESS;
29893}
29894
29895/**
29896 @brief Process GTK Offload Get Information Response function
29897
29898 @param pWDICtx: pointer to the WLAN DAL context
29899 pEventData: pointer to the event information structure
29900
29901 @see
29902 @return Result of the function call
29903*/
29904WDI_Status
29905WDI_ProcessGTKOffloadGetInfoRsp
29906(
29907 WDI_ControlBlockType* pWDICtx,
29908 WDI_EventInfoType* pEventData
29909)
29910{
Jeff Johnson295189b2012-06-20 16:38:30 -070029911 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029912 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029913 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29914 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029915 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029916
Jeff Johnson295189b2012-06-20 16:38:30 -070029917
29918 /*-------------------------------------------------------------------------
29919 Sanity check
29920 -------------------------------------------------------------------------*/
29921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29922 ( NULL == pEventData->pEventData ))
29923 {
29924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029926 WDI_ASSERT(0);
29927 return WDI_STATUS_E_FAILURE;
29928 }
29929
Wilson Yang00256342013-10-10 23:13:38 -070029930 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29931
29932 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029933 Extract response and send it to UMAC
29934 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029935 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29936 {
29937 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29938 pEventData->pEventData,
29939 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029940
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029941 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029942 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029943 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29944 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29945 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29946 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29947 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29948 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29949 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29950 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029951
29952 wpalMutexAcquire(&pWDICtx->wptMutex);
29953 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29954 &pBSSSes);
29955
29956 if ( NULL == pBSSSes )
29957 {
29958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29959 "Association sequence for this BSS does not exist or "
29960 "association no longer in progress - mysterious HAL response");
29961 wpalMutexRelease(&pWDICtx->wptMutex);
29962 return WDI_STATUS_E_NOT_ALLOWED;
29963 }
29964
29965 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29966 sizeof (wpt_macAddr));
29967 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029968 }
29969 else
29970 {
29971 halStatus = *((eHalStatus*)pEventData->pEventData);
29972 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29973 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029974 /*Notify UMAC*/
29975 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29976 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029977 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029978
29979 return WDI_STATUS_SUCCESS;
29980}
29981#endif // WLAN_FEATURE_GTK_OFFLOAD
29982
29983#ifdef WLAN_WAKEUP_EVENTS
29984WDI_Status
29985WDI_ProcessWakeReasonInd
29986(
29987 WDI_ControlBlockType* pWDICtx,
29988 WDI_EventInfoType* pEventData
29989)
29990{
29991 WDI_LowLevelIndType *pWdiInd;
29992 tpWakeReasonParams pWakeReasonParams;
29993 wpt_uint32 allocSize = 0;
29994
29995 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029996 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029997
29998 /*-------------------------------------------------------------------------
29999 Sanity check
30000 -------------------------------------------------------------------------*/
30001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30002 ( NULL == pEventData->pEventData ))
30003 {
30004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030006 WDI_ASSERT( 0 );
30007 return WDI_STATUS_E_FAILURE;
30008 }
30009
30010 /*-------------------------------------------------------------------------
30011 Extract indication and send it to UMAC
30012 -------------------------------------------------------------------------*/
30013 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
30014
30015 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
30016
30017 //Allocate memory for WDI_WakeReasonIndType structure
30018 pWdiInd = wpalMemoryAllocate(allocSize) ;
30019
30020 if(NULL == pWdiInd)
30021 {
30022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030023 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030024 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070030025 WDI_ASSERT(0);
30026 return WDI_STATUS_E_FAILURE;
30027 }
30028
30029 wpalMemoryZero(pWdiInd, allocSize);
30030
30031 /* Fill in the indication parameters*/
30032 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
30033 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
30034 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
30035 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
30036 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
30037 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
30038 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
30039 &(pWakeReasonParams->aDataStart[0]),
30040 pWakeReasonParams->ulStoredDataLen);
30041
ltimariub77f24b2013-01-24 18:54:33 -080030042
30043 if ( pWDICtx->wdiLowLevelIndCB )
30044 {
30045 /*Notify UMAC*/
30046 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
30047 }
Jeff Johnson295189b2012-06-20 16:38:30 -070030048
30049 //Free memory allocated for WDI_WakeReasonIndType structure
30050 wpalMemoryFree(pWdiInd);
30051
30052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030053 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030054
30055 return WDI_STATUS_SUCCESS;
30056}
30057#endif // WLAN_WAKEUP_EVENTS
30058
30059void WDI_GetWcnssCompiledApiVersion
30060(
30061 WDI_WlanVersionType *pWcnssApiVersion
30062)
30063{
30064 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
30065 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
30066 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
30067 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
30068}
30069
30070/**
30071 @brief Process Set TM Level Rsp function (called when a
30072 response is being received over the bus from HAL)
30073
30074 @param pWDICtx: pointer to the WLAN DAL context
30075 pEventData: pointer to the event information structure
30076
30077 @see
30078 @return Result of the function call
30079*/
30080WDI_Status
30081WDI_ProcessSetTmLevelRsp
30082(
30083 WDI_ControlBlockType* pWDICtx,
30084 WDI_EventInfoType* pEventData
30085)
30086{
30087 WDI_Status wdiStatus;
30088 eHalStatus halStatus;
30089 WDI_SetTmLevelCb wdiSetTmLevelCb;
30090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30091
30092 /*-------------------------------------------------------------------------
30093 Sanity check
30094 -------------------------------------------------------------------------*/
30095 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30096 ( NULL == pEventData->pEventData ))
30097 {
30098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030100 WDI_ASSERT(0);
30101 return WDI_STATUS_E_FAILURE;
30102 }
30103
30104 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
30105
30106 /*-------------------------------------------------------------------------
30107 Extract response and send it to UMAC
30108 -------------------------------------------------------------------------*/
30109 halStatus = *((eHalStatus*)pEventData->pEventData);
30110 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30111
30112 /*Notify UMAC*/
30113 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
30114
30115 return WDI_STATUS_SUCCESS;
30116}/*WDI_ProcessSetTmLevelRsp*/
30117
30118/**
30119 @brief Process Set Thermal Mitigation level Changed request
30120
30121 @param pWDICtx: pointer to the WLAN DAL context
30122 pEventData: pointer to the event information structure
30123
30124 @see
30125 @return Result of the function call
30126*/
30127WDI_Status
30128WDI_ProcessSetTmLevelReq
30129(
30130 WDI_ControlBlockType* pWDICtx,
30131 WDI_EventInfoType* pEventData
30132)
30133{
30134 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
30135 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
30136 wpt_uint8* pSendBuffer = NULL;
30137 wpt_uint16 usDataOffset = 0;
30138 wpt_uint16 usSendSize = 0;
30139 tSetThermalMitgationType halTmMsg;
30140
30141 /*-------------------------------------------------------------------------
30142 Sanity check
30143 -------------------------------------------------------------------------*/
30144 if (( NULL == pEventData ) ||
30145 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
30146 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
30147 {
30148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030150 WDI_ASSERT(0);
30151 return WDI_STATUS_E_FAILURE;
30152 }
30153
30154 /*-----------------------------------------------------------------------
30155 Get message buffer
30156 -----------------------------------------------------------------------*/
30157 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
30158 sizeof(halTmMsg),
30159 &pSendBuffer, &usDataOffset, &usSendSize))||
30160 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
30161 {
30162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030163 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070030164 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
30165 WDI_ASSERT(0);
30166 return WDI_STATUS_E_FAILURE;
30167 }
30168
30169 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
30170 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
30171
30172 wpalMemoryCopy( pSendBuffer+usDataOffset,
30173 &halTmMsg,
30174 sizeof(halTmMsg));
30175
30176 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
30177 pWDICtx->pfncRspCB = NULL;
30178 /*-------------------------------------------------------------------------
30179 Send Get STA Request to HAL
30180 -------------------------------------------------------------------------*/
30181 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30182 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
30183}
30184
30185/* Fill the value from the global features enabled array to the global capabilities
30186 * bitmap struct
30187 */
30188static void
30189FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
30190{
30191 wpt_int8 i;
30192 for (i=0; i<len; i++)
30193 {
30194 setFeatCaps(fCaps, enabledFeat[i]);
30195 }
30196}
30197
30198/**
30199 @brief WDI_featureCapsExchangeReq
30200 Post feature capability bitmap exchange event.
30201 Host will send its own capability to FW in this req and
30202 expect FW to send its capability back as a bitmap in Response
30203
30204 @param
30205
30206 wdiFeatureCapsExchangeCb: callback called on getting the response.
30207 It is kept to mantain similarity between WDI reqs and if needed, can
30208 be used in future. Currently, It is set to NULL
30209
30210 pUserData: user data will be passed back with the
30211 callback
30212
30213 @see
30214 @return Result of the function call
30215*/
30216WDI_Status
30217WDI_featureCapsExchangeReq
30218(
30219 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
30220 void* pUserData
30221)
30222{
30223 WDI_EventInfoType wdiEventData;
30224 wpt_int32 fCapsStructSize;
30225
30226 /*------------------------------------------------------------------------
30227 Sanity Check
30228 ------------------------------------------------------------------------*/
30229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30230 {
30231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30232 "WDI API call before module is initialized - Fail request");
30233
30234 return WDI_STATUS_E_NOT_ALLOWED;
30235 }
30236
30237 /* Allocate memory separately for global variable carrying FW caps */
30238 fCapsStructSize = sizeof(tWlanFeatCaps);
30239 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
30240 if ( NULL == gpHostWlanFeatCaps )
30241 {
30242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030243 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070030244 WDI_ASSERT(0);
30245 return WDI_STATUS_MEM_FAILURE;
30246 }
30247
30248 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
30249
30250 /*------------------------------------------------------------------------
30251 Fill in Event data and post to the Main FSM
30252 ------------------------------------------------------------------------*/
30253 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
30254 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053030255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030256 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070030257 gpHostWlanFeatCaps->featCaps[0],
30258 gpHostWlanFeatCaps->featCaps[1],
30259 gpHostWlanFeatCaps->featCaps[2],
30260 gpHostWlanFeatCaps->featCaps[3]
30261 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053030262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053030263 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070030264 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
30265 wdiEventData.pEventData = gpHostWlanFeatCaps;
30266 wdiEventData.uEventDataSize = fCapsStructSize;
30267 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
30268 wdiEventData.pUserData = pUserData;
30269
30270 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30271}
30272
30273/**
Yathish9f22e662012-12-10 14:21:35 -080030274 @brief Disable Active mode offload in Host
30275
30276 @param void
30277 @see
30278 @return void
30279*/
30280void
30281WDI_disableCapablityFeature(wpt_uint8 feature_index)
30282{
30283 supportEnabledFeatures[feature_index] = 0;
30284 return;
30285}
30286
30287/**
Jeff Johnson295189b2012-06-20 16:38:30 -070030288 @brief Process Host-FW Capability Exchange Request function
30289
30290 @param pWDICtx: pointer to the WLAN DAL context
30291 pEventData: pointer to the event information structure
30292
30293 @see
30294 @return Result of the function call
30295*/
30296WDI_Status
30297WDI_ProcessFeatureCapsExchangeReq
30298(
30299 WDI_ControlBlockType* pWDICtx,
30300 WDI_EventInfoType* pEventData
30301)
30302{
30303 wpt_uint8* pSendBuffer = NULL;
30304 wpt_uint16 usDataOffset = 0;
30305 wpt_uint16 usSendSize = 0;
30306 wpt_uint16 usLen = 0;
30307
30308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30309
30310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030311 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030312
30313 /*-------------------------------------------------------------------------
30314 Sanity check
30315 -------------------------------------------------------------------------*/
30316 /* Call back function is NULL since not required for cap exchange req */
30317 if (( NULL == pEventData ) ||
30318 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
30319 {
30320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030322 WDI_ASSERT(0);
30323 return WDI_STATUS_E_FAILURE;
30324 }
30325
30326 /*-----------------------------------------------------------------------
30327 Get message buffer
30328 -----------------------------------------------------------------------*/
30329 usLen = sizeof(tWlanFeatCaps);
30330
30331 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30332 WDI_FEATURE_CAPS_EXCHANGE_REQ,
30333 usLen,
30334 &pSendBuffer, &usDataOffset, &usSendSize))||
30335 ( usSendSize < (usDataOffset + usLen )))
30336 {
30337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030338 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070030339 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
30340 WDI_ASSERT(0);
30341 return WDI_STATUS_E_FAILURE;
30342 }
30343
30344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030345 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070030346 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
30347 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
30348 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
30349 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
30350 );
30351
30352 /* Copy host caps after the offset in the send buffer */
30353 wpalMemoryCopy( pSendBuffer+usDataOffset,
30354 (tWlanFeatCaps *)pEventData->pEventData,
30355 usLen);
30356
30357 /*-------------------------------------------------------------------------
30358 Send Start Request to HAL
30359 -------------------------------------------------------------------------*/
30360 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30361 (WDI_StartRspCb)pEventData->pCBfnc,
30362 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
30363
30364}/*WDI_ProcessFeatureCapsExchangeReq*/
30365
30366/**
30367 @brief Process Host-FW Capability Exchange Response function
30368
30369 @param pWDICtx: pointer to the WLAN DAL context
30370 pEventData: pointer to the event information structure
30371
30372 @see
30373 @return Result of the function call
30374*/
30375WDI_Status
30376WDI_ProcessFeatureCapsExchangeRsp
30377(
30378 WDI_ControlBlockType* pWDICtx,
30379 WDI_EventInfoType* pEventData
30380)
30381{
30382 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
30383 wpt_int32 fCapsStructSize;
30384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30385
30386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030387 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030388
30389 /*-------------------------------------------------------------------------
30390 Sanity check
30391 -------------------------------------------------------------------------*/
30392 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30393 ( NULL == pEventData->pEventData ))
30394 {
30395 /* It will go here when riva is old (doesn't understand this msg) and host is new */
30396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030398 WDI_ASSERT(0);
30399 return WDI_STATUS_E_FAILURE;
30400 }
30401
30402 /* Allocate memory separately for global variable carrying FW caps */
30403 fCapsStructSize = sizeof(tWlanFeatCaps);
30404 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
30405 if ( NULL == gpFwWlanFeatCaps )
30406 {
30407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030408 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070030409 WDI_ASSERT(0);
30410 return WDI_STATUS_MEM_FAILURE;
30411 }
30412
30413 /*-------------------------------------------------------------------------
30414 Unpack HAL Response Message - the header was already extracted by the
30415 main Response Handling procedure
30416 -------------------------------------------------------------------------*/
30417 /*-------------------------------------------------------------------------
30418 Extract response and send it to UMAC
30419 -------------------------------------------------------------------------*/
30420
30421 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
30422 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053030423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030424 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070030425 gpFwWlanFeatCaps->featCaps[0],
30426 gpFwWlanFeatCaps->featCaps[1],
30427 gpFwWlanFeatCaps->featCaps[2],
30428 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053030429 );
Mukul Sharmaf1bd9322015-10-20 16:03:42 +053030430
Ratheesh S P36dbc932015-08-07 14:28:57 +053030431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053030432 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070030433 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
30434
30435 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
30436 if (wdiFeatureCapsExchangeCb != NULL)
30437 wdiFeatureCapsExchangeCb(NULL, NULL);
30438
30439 return WDI_STATUS_SUCCESS;
30440}
30441
Mohit Khanna4a70d262012-09-11 16:30:12 -070030442#ifdef WLAN_FEATURE_11AC
30443WDI_Status
30444WDI_ProcessUpdateVHTOpModeRsp
30445(
30446 WDI_ControlBlockType* pWDICtx,
30447 WDI_EventInfoType* pEventData
30448)
30449{
30450 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
30451 WDI_Status wdiStatus;
30452 eHalStatus halStatus;
30453
30454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30455
30456 /*-------------------------------------------------------------------------
30457 Sanity check
30458 -------------------------------------------------------------------------*/
30459 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30460 ( NULL == pEventData->pEventData))
30461 {
30462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030463 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030464 WDI_ASSERT(0);
30465 return WDI_STATUS_E_FAILURE;
30466 }
30467 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
30468
30469 /*-------------------------------------------------------------------------
30470 Extract response and send it to UMAC
30471 -------------------------------------------------------------------------*/
30472 halStatus = *((eHalStatus*)pEventData->pEventData);
30473 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30474
30475 /*Notify UMAC*/
30476 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
30477
30478 return WDI_STATUS_SUCCESS;
30479}
30480#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070030481/**
30482 @brief WDI_getHostWlanFeatCaps
30483 WDI API that returns whether the feature passed to it as enum value in
30484 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
30485 variable storing host capability bitmap to find this. This can be used by
30486 other moduels to decide certain things like call different APIs based on
30487 whether a particular feature is supported.
30488
30489 @param
30490
30491 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
30492
30493 @see
30494 @return
30495 0 - if the feature is NOT supported in host
30496 any non-zero value - if the feature is SUPPORTED in host.
30497*/
30498wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
30499{
30500 wpt_uint8 featSupported = 0;
30501 if (gpHostWlanFeatCaps != NULL)
30502 {
30503 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
30504 }
30505 else
30506 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070030508 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070030509 }
30510 return featSupported;
30511}
30512
30513/**
30514 @brief WDI_getFwWlanFeatCaps
30515 WDI API that returns whether the feature passed to it as enum value in
30516 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
30517 variable storing host capability bitmap to find this. This can be used by
30518 other moduels to decide certain things like call different APIs based on
30519 whether a particular feature is supported.
30520
30521 @param
30522
30523 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
30524 in wlan_hal_msg.h.
30525
30526 @see
30527 @return
30528 0 - if the feature is NOT supported in FW
30529 any non-zero value - if the feature is SUPPORTED in FW.
30530*/
30531wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
30532{
30533 wpt_uint8 featSupported = 0;
30534 if (gpFwWlanFeatCaps != NULL)
30535 {
30536 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
30537 }
30538 else
30539 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070030541 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070030542 }
30543 return featSupported;
30544}
Mohit Khanna4a70d262012-09-11 16:30:12 -070030545
Katya Nigamf0511f62015-05-05 16:40:57 +053030546wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
30547{
30548 /* 5gHz Channel */
30549 if( channel >= 34 && channel <= 165 )
30550 {
30551 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
30552 {
30553 if ( channel== 36 || channel == 52 || channel == 100 ||
30554 channel == 116 || channel == 149 )
30555 {
30556 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
30557 }
30558 else if ( channel == 40 || channel == 56 || channel == 104 ||
30559 channel == 120 || channel == 153 )
30560 {
30561 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
30562 }
30563 else if ( channel == 44 || channel == 60 || channel == 108 ||
30564 channel == 124 || channel == 157 )
30565 {
30566 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
30567 }
30568 else if ( channel == 48 || channel == 64 || channel == 112 ||
30569 channel == 128 || channel == 144 || channel == 161 )
30570 {
30571 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
30572 }
30573 else if ( channel == 165 )
30574 {
30575 return PHY_SINGLE_CHANNEL_CENTERED;
30576 }
30577 }
30578
30579 else
30580 {
30581 if ( channel== 40 || channel == 48 || channel == 56 ||
30582 channel == 64 || channel == 104 || channel == 112 ||
30583 channel == 120 || channel == 128 || channel == 136 ||
30584 channel == 144 || channel == 153 || channel == 161 )
30585 {
30586 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30587 }
30588 else if ( channel== 36 || channel == 44 || channel == 52 ||
30589 channel == 60 || channel == 100 || channel == 108 ||
30590 channel == 116 || channel == 124 || channel == 132 ||
30591 channel == 140 || channel == 149 || channel == 157 )
30592 {
30593 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30594 }
30595 else if ( channel == 165 )
30596 {
30597 return PHY_SINGLE_CHANNEL_CENTERED;
30598 }
30599 }
30600 }
30601
30602 /* 2.4Ghz Channel */
30603 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
30604 {
30605 if (channel >= 1 && channel <= 7)
30606 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30607 else if (channel >= 8 && channel <= 13)
30608 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30609 else if (channel ==14)
30610 return PHY_SINGLE_CHANNEL_CENTERED;
30611 }
30612 return PHY_SINGLE_CHANNEL_CENTERED;
30613}
30614
Mohit Khanna4a70d262012-09-11 16:30:12 -070030615#ifdef WLAN_FEATURE_11AC
30616WDI_Status
30617WDI_ProcessUpdateVHTOpModeReq
30618(
30619 WDI_ControlBlockType* pWDICtx,
30620 WDI_EventInfoType* pEventData
30621)
30622{
30623 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
30624 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
30625 wpt_uint8* pSendBuffer = NULL;
30626 wpt_uint16 usDataOffset = 0;
30627 wpt_uint16 usSendSize = 0;
30628
30629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30630
30631 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030632 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030633
30634 /*-------------------------------------------------------------------------
30635 Sanity check
30636 -------------------------------------------------------------------------*/
30637 if (( NULL == pEventData ) ||
30638 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
30639 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
30640 {
30641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030642 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030643 WDI_ASSERT(0);
30644 return WDI_STATUS_E_FAILURE;
30645 }
30646
30647 /*-----------------------------------------------------------------------
30648 Get message buffer
30649 -----------------------------------------------------------------------*/
30650 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
30651 sizeof(WDI_UpdateVHTOpMode),
30652 &pSendBuffer, &usDataOffset, &usSendSize))||
30653 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
30654 {
30655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30656 "Unable to get send buffer in update vht opMode req");
30657 WDI_ASSERT(0);
30658 return WDI_STATUS_E_FAILURE;
30659 }
30660
30661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030662 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030663
30664 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
30665 sizeof(WDI_UpdateVHTOpMode));
30666
30667 /*-------------------------------------------------------------------------
30668 Send Start Request to HAL
30669 -------------------------------------------------------------------------*/
30670 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30671 wdiVHTOpModeCb,
30672 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
30673
30674}
30675
30676WDI_Status
30677WDI_UpdateVHTOpModeReq
30678(
30679 WDI_UpdateVHTOpMode *pData,
30680 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
30681 void* pUserData
30682)
30683{
30684 WDI_EventInfoType wdiEventData;
30685
30686 /*------------------------------------------------------------------------
30687 Sanity Check
30688 ------------------------------------------------------------------------*/
30689 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30690 {
30691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30692 "WDI API call before module is initialized - Fail request");
30693
30694 return WDI_STATUS_E_NOT_ALLOWED;
30695 }
30696
30697 /*------------------------------------------------------------------------
30698 Fill in Event data and post to the Main FSM
30699 ------------------------------------------------------------------------*/
30700 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
30701 wdiEventData.pEventData = pData;
30702 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
30703 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
30704 wdiEventData.pUserData = pUserData;
30705
30706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030707 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030708
30709 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30710
30711}
30712#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030713
30714/**
30715 @brief WDI_TransportChannelDebug -
30716 Display DXE Channel debugging information
30717 User may request to display DXE channel snapshot
30718 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030719
Jeff Johnsonb88db982012-12-10 13:34:59 -080030720 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053030721 @param debugFlags : Enable stall detect features
30722 defined by WPAL_DeviceDebugFlags
30723 These features may effect
30724 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030725 @see
30726 @return none
30727*/
30728void WDI_TransportChannelDebug
30729(
30730 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053030731 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030732)
30733{
Mihir Shete40a55652014-03-02 14:14:47 +053030734 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030735 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070030736}
Sravan Kumar Kairam6eac7522015-11-27 23:37:02 +053030737
30738/**
30739 @brief WDI_TransportKickDxe -
30740 Request Kick DXE when HDD TX time out happen
30741
30742 @param none
30743 @see
30744 @return none
30745*/
30746void WDI_TransportKickDxe()
30747{
30748 WDTS_ChannelKickDxe();
30749 return;
30750}
30751
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030752/**
30753 @brief WDI_SsrTimerCB
30754 Callback function for SSR timer, if this is called then the graceful
30755 shutdown for Riva did not happen.
30756
30757 @param pUserData : user data to timer
30758
30759 @see
30760 @return none
30761*/
30762void
30763WDI_SsrTimerCB
30764(
30765 void *pUserData
30766)
30767{
30768 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
30769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30770
30771 if (NULL == pWDICtx )
30772 {
30773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030774 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030775 WDI_ASSERT(0);
30776 return;
30777 }
30778 wpalRivaSubystemRestart();
30779
30780 return;
30781
30782}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070030783
30784/**
30785 @brief WDI_SetEnableSSR -
30786 This API is called to enable/disable SSR on WDI timeout.
30787
30788 @param enableSSR : enable/disable SSR
30789
30790 @see
30791 @return none
30792*/
30793void WDI_SetEnableSSR(wpt_boolean enableSSR)
30794{
30795 gWDICb.bEnableSSR = enableSSR;
30796}
Leo Chang9056f462013-08-01 19:21:11 -070030797
Agrawal Ashishaf1de652016-03-02 18:03:43 +053030798/**
30799 * WDI_SetMgmtPktViaWQ5() - Set INI params sendMgmtPktViaWQ5 to Control
30800 * Block Type.
30801 * @sendMgmtPktViaWQ5: INI params to enable/disable sending mgmt pkt via WQ5.
30802 *
30803 * Return: void
30804 */
30805void WDI_SetMgmtPktViaWQ5(wpt_boolean sendMgmtPktViaWQ5)
30806{
30807 gWDICb.sendMgmtPktViaWQ5 = sendMgmtPktViaWQ5;
30808}
30809
Leo Chang9056f462013-08-01 19:21:11 -070030810
30811#ifdef FEATURE_WLAN_LPHB
30812/**
Leo Changd9df8aa2013-09-26 13:32:26 -070030813 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070030814 This function will be invoked when FW detects low power
30815 heart beat failure
30816
30817 @param pWDICtx : wdi context
30818 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070030819 @see
30820 @return Result of the function call
30821*/
30822WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070030823WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070030824(
30825 WDI_ControlBlockType* pWDICtx,
30826 WDI_EventInfoType* pEventData
30827)
30828{
30829 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070030830 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070030831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30832
30833 /*-------------------------------------------------------------------------
30834 Sanity check
30835 -------------------------------------------------------------------------*/
30836 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30837 (NULL == pEventData->pEventData))
30838 {
30839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30840 "%s: Invalid parameters", __func__);
30841 WDI_ASSERT(0);
30842 return WDI_STATUS_E_FAILURE;
30843 }
30844
30845 /*-------------------------------------------------------------------------
30846 Extract indication and send it to UMAC
30847 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070030848 wpalMemoryCopy(&lphbIndicationParam,
30849 pEventData->pEventData,
30850 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070030851
Leo Changd9df8aa2013-09-26 13:32:26 -070030852 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070030853 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030854 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030855 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030856 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030857 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070030858 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070030859 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070030860 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070030861 /*Notify UMAC*/
30862 if (pWDICtx->wdiLowLevelIndCB)
30863 {
30864 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30865 }
30866
30867 return WDI_STATUS_SUCCESS;
30868}
30869
30870/**
30871 @brief WDI_ProcessLphbCfgRsp -
30872 LPHB configuration response from FW
30873
30874 @param pWDICtx : wdi context
30875 pEventData : indication data
30876
30877 @see
30878 @return Result of the function call
30879*/
30880WDI_Status WDI_ProcessLphbCfgRsp
30881(
30882 WDI_ControlBlockType* pWDICtx,
30883 WDI_EventInfoType* pEventData
30884)
30885{
30886 WDI_Status wdiStatus;
30887 eHalStatus halStatus;
30888 WDI_LphbCfgCb wdiLphbCfgCb;
30889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30890
30891 /*-------------------------------------------------------------------------
30892 Sanity check
30893 -------------------------------------------------------------------------*/
30894 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30895 (NULL == pEventData->pEventData))
30896 {
30897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30898 "%s: Invalid parameters", __func__);
30899 WDI_ASSERT(0);
30900 return WDI_STATUS_E_FAILURE;
30901 }
30902
30903 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30904
30905 /*-------------------------------------------------------------------------
30906 Extract response and send it to UMAC
30907 -------------------------------------------------------------------------*/
30908 halStatus = *((eHalStatus*)pEventData->pEventData);
30909 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30910
30911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30912 "LPHB Cfg Rsp Return status %d", wdiStatus);
30913 /*Notify UMAC*/
30914 if (NULL != wdiLphbCfgCb)
30915 {
30916 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30917 }
30918
30919 return WDI_STATUS_SUCCESS;
30920}
30921
30922/**
30923 @brief WDI_ProcessLPHBConfReq -
30924 LPHB configuration request to FW
30925
30926 @param pWDICtx : wdi context
30927 pEventData : indication data
30928
30929 @see
30930 @return none
30931*/
30932WDI_Status WDI_ProcessLPHBConfReq
30933(
30934 WDI_ControlBlockType* pWDICtx,
30935 WDI_EventInfoType* pEventData
30936)
30937{
30938 WDI_LPHBReq *pLphbReqParams;
30939 WDI_Status wdiStatus;
30940 wpt_uint8* pSendBuffer = NULL;
30941 wpt_uint16 usDataOffset = 0;
30942 wpt_uint16 usSendSize = 0;
30943 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30945
30946 /*-------------------------------------------------------------------------
30947 Sanity check
30948 -------------------------------------------------------------------------*/
30949 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30950 {
30951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30952 "%s: Invalid parameters in Suspend ind",__func__);
30953 WDI_ASSERT(0);
30954 return WDI_STATUS_E_FAILURE;
30955 }
30956
30957 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30958
30959 /*-----------------------------------------------------------------------
30960 Get message buffer
30961 -----------------------------------------------------------------------*/
30962 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30963 WDI_LPHB_CFG_REQ,
30964 sizeof(tHalLowPowerHeartBeatReqMsg),
30965 &pSendBuffer, &usDataOffset, &usSendSize))||
30966 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30967 {
30968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30969 "Unable to get send buffer in LPHB Ind ");
30970 WDI_ASSERT(0);
30971 return WDI_STATUS_E_FAILURE;
30972 }
30973
30974 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30975 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30976
30977 halLphbReqRarams->lowPowerHeartBeatCmdType =
30978 (tANI_U16)(++pLphbReqParams->cmd);
30979 switch ((tANI_U16)pLphbReqParams->cmd)
30980 {
30981 case WDI_LPHB_SET_EN_PARAMS_INDID:
30982 halLphbReqRarams->sessionIdx =
30983 pLphbReqParams->params.lphbEnableReq.session;
30984 halLphbReqRarams->options.control.heartBeatEnable =
30985 pLphbReqParams->params.lphbEnableReq.enable;
30986 halLphbReqRarams->options.control.heartBeatType =
30987 pLphbReqParams->params.lphbEnableReq.item;
30988 break;
30989
30990 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30991 halLphbReqRarams->sessionIdx =
30992 pLphbReqParams->params.lphbTcpParamReq.session;
30993 halLphbReqRarams->options.tcpParams.timeOutSec =
30994 pLphbReqParams->params.lphbTcpParamReq.timeout;
30995 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30996 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30997 sizeof(v_U32_t));
30998 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30999 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
31000 sizeof(v_U32_t));
31001
31002 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
31003 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
31004 WDI_MAC_ADDR_LEN);
31005
31006 halLphbReqRarams->options.tcpParams.hostPort =
31007 pLphbReqParams->params.lphbTcpParamReq.src_port;
31008 halLphbReqRarams->options.tcpParams.destPort =
31009 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070031010 halLphbReqRarams->options.tcpParams.timePeriodSec =
31011 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
31012 halLphbReqRarams->options.tcpParams.tcpSn =
31013 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070031014 break;
31015
31016 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
31017 halLphbReqRarams->sessionIdx =
31018 pLphbReqParams->params.lphbTcpFilterReq.session;
31019 halLphbReqRarams->options.tcpUdpFilter.offset =
31020 pLphbReqParams->params.lphbTcpFilterReq.offset;
31021 halLphbReqRarams->options.tcpUdpFilter.filterLength =
31022 pLphbReqParams->params.lphbTcpFilterReq.length;
31023 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
31024 pLphbReqParams->params.lphbTcpFilterReq.filter,
31025 WDI_LPHB_FILTER_LEN);
31026 break;
31027
31028 case WDI_LPHB_SET_UDP_PARAMS_INDID:
31029 halLphbReqRarams->sessionIdx =
31030 pLphbReqParams->params.lphbUdpParamReq.session;
31031 halLphbReqRarams->options.udpParams.timeOutSec =
31032 pLphbReqParams->params.lphbUdpParamReq.timeout;
31033 halLphbReqRarams->options.udpParams.timePeriodSec =
31034 pLphbReqParams->params.lphbUdpParamReq.interval;
31035 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
31036 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
31037 sizeof(v_U32_t));
31038 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
31039 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
31040 sizeof(v_U32_t));
31041
31042 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
31043 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
31044 WDI_MAC_ADDR_LEN);
31045
31046 halLphbReqRarams->options.udpParams.hostPort =
31047 pLphbReqParams->params.lphbUdpParamReq.src_port;
31048 halLphbReqRarams->options.udpParams.destPort =
31049 pLphbReqParams->params.lphbUdpParamReq.dst_port;
31050 break;
31051
31052 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
31053 halLphbReqRarams->sessionIdx =
31054 pLphbReqParams->params.lphbUdpFilterReq.session;
31055 halLphbReqRarams->options.tcpUdpFilter.offset =
31056 pLphbReqParams->params.lphbUdpFilterReq.offset;
31057 halLphbReqRarams->options.tcpUdpFilter.filterLength =
31058 pLphbReqParams->params.lphbUdpFilterReq.length;
31059 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
31060 pLphbReqParams->params.lphbUdpFilterReq.filter,
31061 WDI_LPHB_FILTER_LEN);
31062 break;
31063
31064 case WDI_LPHB_SET_NETWORK_INFO_INDID:
31065 /* NA */
31066 break;
31067
31068 default:
31069 break;
31070 }
31071
31072 /*-------------------------------------------------------------------------
31073 Send Suspend Request to HAL
31074 -------------------------------------------------------------------------*/
31075 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31076 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31077
31078 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31079 usSendSize, pWDICtx->pfncRspCB,
31080 pWDICtx->pReqStatusUserData,
31081 WDI_LPHB_CFG_RESP);
31082
31083 return wdiStatus;
31084}
31085
31086/**
31087 @brief WDI_LPHBConfReq -
31088 LPHB configuration request API
31089
31090 @param lphbconfParam : configuration parameter
31091 usrData : client context
31092 lphbCfgCb : callback function pointer
31093
31094 @see
31095 @return Success or fail status code
31096*/
31097WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
31098 void *usrData, WDI_LphbCfgCb lphbCfgCb)
31099{
31100 WDI_EventInfoType wdiEventData;
31101
31102 /*------------------------------------------------------------------------
31103 Sanity Check
31104 ------------------------------------------------------------------------*/
31105 if (eWLAN_PAL_FALSE == gWDIInitialized)
31106 {
31107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31108 "WDI API call before module is initialized - Fail request");
31109
31110 return WDI_STATUS_E_NOT_ALLOWED;
31111 }
31112
31113 /*------------------------------------------------------------------------
31114 Fill in Event data and post to the Main FSM
31115 ------------------------------------------------------------------------*/
31116 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
31117 wdiEventData.pEventData = lphbconfParam;
31118 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
31119 wdiEventData.pCBfnc = lphbCfgCb;
31120 wdiEventData.pUserData = usrData;
31121
31122 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31123}
31124#endif /* FEATURE_WLAN_LPHB */
31125
Ravi Joshid2ca7c42013-07-23 08:37:49 -070031126/**
31127 @brief WDI_ProcessIbssPeerInactivityInd
31128 Process peer inactivity indication coming from HAL
31129
31130 @param pWDICtx: pointer to the WLAN DAL context
31131 pEventData: pointer to the event information structure
31132 @see
31133 @return Result of the function call
31134*/
31135WDI_Status
31136WDI_ProcessIbssPeerInactivityInd
31137(
31138 WDI_ControlBlockType* pWDICtx,
31139 WDI_EventInfoType* pEventData
31140)
31141{
31142 WDI_LowLevelIndType wdiInd;
31143 tIbssPeerInactivityIndMsg halIbssIndMsg;
31144
31145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31146
31147 /*-------------------------------------------------------------------------
31148 Sanity check
31149 -------------------------------------------------------------------------*/
31150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31151 ( NULL == pEventData->pEventData ))
31152 {
31153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31154 "%s: Invalid parameters", __func__);
31155 WDI_ASSERT( 0 );
31156 return WDI_STATUS_E_FAILURE;
31157 }
31158
31159 /*-------------------------------------------------------------------------
31160 Extract indication and send it to UMAC
31161 -------------------------------------------------------------------------*/
31162 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
31163 pEventData->pEventData,
31164 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
31165
31166 /*Fill in the indication parameters*/
31167 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
31168
31169 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
31170 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
31171
31172 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
31173 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
31174
31175 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
31176 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
31177 sizeof(tSirMacAddr));
31178
31179 /*Notify UMAC*/
31180 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31181
31182 return WDI_STATUS_SUCCESS;
31183
31184} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053031185
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031186
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031187/**
31188*@brief WDI_RateUpdateInd will be called when the upper MAC
31189 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053031190
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031191
31192 @param wdiRateUpdateIndParams:
31193
31194
31195 @see
31196 @return Result of the function call
31197*/
31198WDI_Status
31199WDI_RateUpdateInd
31200(
31201 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
31202)
31203{
31204 WDI_EventInfoType wdiEventData;
31205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31206
31207 /*------------------------------------------------------------------------
31208 Sanity Check
31209 ------------------------------------------------------------------------*/
31210 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31211 {
31212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31213 "WDI API call before module is initialized - Fail request");
31214
31215 return WDI_STATUS_E_NOT_ALLOWED;
31216 }
31217
31218 /*------------------------------------------------------------------------
31219 Fill in Event data and post to the Main FSM
31220 ------------------------------------------------------------------------*/
31221 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
31222 wdiEventData.pEventData = wdiRateUpdateIndParams;
31223 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
31224 wdiEventData.pCBfnc = NULL;
31225 wdiEventData.pUserData = NULL;
31226
31227 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31228
31229}/* WDI_RateUpdateInd */
31230
31231/**
31232 @brief Process Rate Update Indication and post it to HAL
31233
31234 @param pWDICtx: pointer to the WLAN DAL context
31235 pEventData: pointer to the event information structure
31236
31237 @see
31238 @return Result of the function call
31239*/
31240WDI_Status
31241WDI_ProcessRateUpdateInd
31242(
31243 WDI_ControlBlockType* pWDICtx,
31244 WDI_EventInfoType* pEventData
31245)
31246{
31247 wpt_uint8* pSendBuffer = NULL;
31248 wpt_uint16 usDataOffset = 0;
31249 wpt_uint16 usSendSize = 0;
31250 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
31251 tHalRateUpdateInd *pRateUpdateInd;
31252 WDI_Status wdiStatus;
31253
31254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31255
31256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31257 "%s", __func__);
31258
31259 /*-------------------------------------------------------------------------
31260 Sanity check
31261 -------------------------------------------------------------------------*/
31262 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31263 {
31264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31265 "%s: Invalid parameters", __func__);
31266 WDI_ASSERT(0);
31267 return WDI_STATUS_E_FAILURE;
31268 }
31269 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
31270 /*-----------------------------------------------------------------------
31271 Get message buffer
31272 -----------------------------------------------------------------------*/
31273
31274 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31275 WDI_RATE_UPDATE_IND,
31276 sizeof(tHalRateUpdateParams),
31277 &pSendBuffer, &usDataOffset, &usSendSize))||
31278 ( usSendSize < (usDataOffset +
31279 sizeof(tHalRateUpdateParams) )))
31280 {
31281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31282 "Unable to get send buffer in Rate Update Indication %p ",
31283 pEventData);
31284 WDI_ASSERT(0);
31285 return WDI_STATUS_E_FAILURE;
31286 }
31287
31288 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
31289
31290 /* Copy the bssid */
31291 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
31292 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
31293
31294 /* Copy the tx flags */
31295 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
31296 pwdiRateUpdateInd->ucastDataRateTxFlag;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031297 pRateUpdateInd->halRateUpdateParams.rmcDataRateTxFlag =
31298 pwdiRateUpdateInd->rmcDataRateTxFlag;
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031299 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
31300 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
31301 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
31302 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
31303
31304 /* Copy the tx rates */
31305 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
31306 pwdiRateUpdateInd->ucastDataRate;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031307 pRateUpdateInd->halRateUpdateParams.rmcDataRate =
31308 pwdiRateUpdateInd->rmcDataRate;
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031309 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
31310 pwdiRateUpdateInd->mcastDataRate24GHz;
31311 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
31312 pwdiRateUpdateInd->mcastDataRate5GHz;
31313
31314 /*-------------------------------------------------------------------------
31315 Send Rate Update Indication to HAL
31316 -------------------------------------------------------------------------*/
31317 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
31318 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
31319
31320 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
31321
31322 return (wdiStatus != WDI_STATUS_SUCCESS) ?
31323 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
31324
31325} /* WDI_ProcessRateUpdateInd */
31326
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031327#ifdef WLAN_FEATURE_RMC
31328WDI_Status
31329WDI_ProcessRMCRulerResp
31330(
31331 WDI_ControlBlockType* pWDICtx,
31332 WDI_EventInfoType* pEventData
31333)
31334{
31335 tHalRmcRulerRspMsg halRmcRulerRspMsg;
31336 WDI_RmcRulerRspCb wdiRmcRulerRspCb;
31337 WDI_RmcRspParamsType wdiRmcRsp;
31338
31339 /* Sanity check */
31340 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31341 ( NULL == pEventData->pEventData ))
31342 {
31343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31344 "%s: Invalid parameters", __func__);
31345 WDI_ASSERT( 0 );
31346 return WDI_STATUS_E_FAILURE;
31347 }
31348
31349 wdiRmcRulerRspCb = (WDI_RmcRulerRspCb)pWDICtx->pfncRspCB;
31350
31351 /* Extract indication and send it to UMAC */
31352 wpalMemoryCopy( &halRmcRulerRspMsg.rulerRspParams,
31353 pEventData->pEventData,
31354 sizeof(halRmcRulerRspMsg.rulerRspParams) );
31355
31356 wdiRmcRsp.status = halRmcRulerRspMsg.rulerRspParams.status;
31357 wpalMemoryCopy(wdiRmcRsp.mcastTransmitter,
31358 &halRmcRulerRspMsg.rulerRspParams.mcastTransmitter,
31359 sizeof(wdiRmcRsp.mcastTransmitter));
31360 wpalMemoryCopy(wdiRmcRsp.mcastGroup,
31361 &halRmcRulerRspMsg.rulerRspParams.mcastGroup,
31362 sizeof(wdiRmcRsp.mcastGroup));
31363
31364 switch (halRmcRulerRspMsg.rulerRspParams.cmd)
31365 {
31366 default:
31367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31368 "%s: Invalid command %d", __func__,
31369 halRmcRulerRspMsg.rulerRspParams.cmd);
31370 return WDI_STATUS_E_FAILURE;
31371
31372 case WLAN_HAL_SUGGEST_RULER:
31373 {
31374 /* Fill in the indication parameters */
31375 wdiRmcRsp.cmd = eWDI_SUGGEST_RULER_CMD;
31376 wpalMemoryCopy(wdiRmcRsp.ruler,
31377 &halRmcRulerRspMsg.rulerRspParams.ruler,
31378 sizeof(halRmcRulerRspMsg.rulerRspParams.ruler));
31379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31380 "%s Suggest_Ruler", __func__);
31381 break;
31382 }
31383
31384 case WLAN_HAL_BECOME_RULER:
31385 {
31386 /* Fill in the indication parameters */
31387 wdiRmcRsp.cmd = eWDI_BECOME_RULER_CMD;
31388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31389 "%s Become_Ruler", __func__);
31390 break;
31391 }
31392 }
31393
31394 /* Notify UMAC */
31395 wdiRmcRulerRspCb(&wdiRmcRsp, pWDICtx->pRspCBUserData);
31396
31397 return WDI_STATUS_SUCCESS;
31398}
31399
31400WDI_Status
31401WDI_ProcessRMCUpdateIndToHost
31402(
31403 WDI_ControlBlockType* pWDICtx,
31404 WDI_EventInfoType* pEventData
31405)
31406{
31407 WDI_LowLevelIndType wdiInd;
31408 tHalRmcUpdateInd halRmcUpdateInd;
31409
31410 /* Sanity check */
31411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31412 ( NULL == pEventData->pEventData ))
31413 {
31414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31415 "%s: Invalid parameters", __func__);
31416 WDI_ASSERT( 0 );
31417 return WDI_STATUS_E_FAILURE;
31418 }
31419
31420 /* Extract indication and send it to UMAC */
31421 wpalMemoryCopy( &halRmcUpdateInd.rulerIndParams,
31422 pEventData->pEventData,
31423 sizeof(halRmcUpdateInd.rulerIndParams) );
31424
31425 switch (halRmcUpdateInd.rulerIndParams.indication)
31426 {
31427 default:
31428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31429 "%s: Invalid command %d", __func__,
31430 halRmcUpdateInd.rulerIndParams.indication);
31431 return WDI_STATUS_E_FAILURE;
31432
31433 case WLAN_HAL_RULER_PICK_NEW:
31434 {
31435 /* Fill in the indication parameters */
31436 wdiInd.wdiIndicationType = WDI_RMC_RULER_PICK_NEW;
31437 wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.indication
31438 = halRmcUpdateInd.rulerIndParams.indication;
31439 wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.role
31440 = halRmcUpdateInd.rulerIndParams.role;
31441 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd. \
31442 mcastTransmitter,
31443 &halRmcUpdateInd.rulerIndParams.mcastTransmitter,
31444 sizeof(tSirMacAddr) );
31445 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.mcastGroup,
31446 &halRmcUpdateInd.rulerIndParams.mcastGroup,
31447 sizeof(tSirMacAddr) );
31448 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.mcastRuler,
31449 &halRmcUpdateInd.rulerIndParams.mcastRuler,
31450 sizeof(tSirMacAddr) );
31451 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.ruler,
31452 &halRmcUpdateInd.rulerIndParams.ruler,
31453 sizeof(tSirMacAddr) * HAL_NUM_MAX_RULERS );
31454 break;
31455 }
31456 }
31457
31458
31459 /* Notify UMAC */
31460 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31461
31462 return WDI_STATUS_SUCCESS;
31463}
31464
31465WDI_Status
31466WDI_RmcRulerReq
31467(
31468 WDI_RmcRulerReqParams *wdiRmcRulerReqParams,
31469 WDI_RmcRulerRspCb wdiRmcRulerRspCb,
31470 void *usrData
31471)
31472{
31473 WDI_EventInfoType wdiEventData;
31474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31475
31476 /*------------------------------------------------------------------------
31477 Sanity Check
31478 ------------------------------------------------------------------------*/
31479 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31480 {
31481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31482 "WDI API call before module is initialized - Fail request");
31483
31484 return WDI_STATUS_E_NOT_ALLOWED;
31485 }
31486
31487 /*------------------------------------------------------------------------
31488 Fill in Event data and post to the Main FSM
31489 ------------------------------------------------------------------------*/
31490 wdiEventData.wdiRequest = WDI_RMC_RULER_REQ;
31491 wdiEventData.pEventData = wdiRmcRulerReqParams;
31492 wdiEventData.uEventDataSize = sizeof(WDI_RmcRulerReqParams);
31493 wdiEventData.pCBfnc = wdiRmcRulerRspCb;
31494 wdiEventData.pUserData = usrData;
31495
31496 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31497
31498} /* WDI_RmcRulerReq */
31499
31500WDI_Status
31501WDI_RmcUpdateInd
31502(
31503 WDI_RmcUpdateIndParams *wdiRmcUpdateIndParams
31504)
31505{
31506 WDI_EventInfoType wdiEventData;
31507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31508
31509 /*------------------------------------------------------------------------
31510 Sanity Check
31511 ------------------------------------------------------------------------*/
31512 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31513 {
31514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31515 "WDI API call before module is initialized - Fail request");
31516
31517 return WDI_STATUS_E_NOT_ALLOWED;
31518 }
31519
31520 /*------------------------------------------------------------------------
31521 Fill in Event data and post to the Main FSM
31522 ------------------------------------------------------------------------*/
31523 wdiEventData.wdiRequest = WDI_RMC_UPDATE_IND;
31524 wdiEventData.pEventData = wdiRmcUpdateIndParams;
31525 wdiEventData.uEventDataSize = sizeof(WDI_RmcUpdateIndParams);
31526 wdiEventData.pCBfnc = NULL;
31527 wdiEventData.pUserData = NULL;
31528
31529 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31530
31531}/* WDI_RmcUpdateInd */
31532
31533WDI_Status
31534WDI_ProcessRMCRulerReq
31535(
31536 WDI_ControlBlockType* pWDICtx,
31537 WDI_EventInfoType* pEventData
31538)
31539{
31540 WDI_Status wdiStatus;
31541 wpt_uint8* pSendBuffer = NULL;
31542 wpt_uint16 usDataOffset = 0;
31543 wpt_uint16 usSendSize = 0;
31544 WDI_RmcRulerReqParams *pwdiRulerReq = NULL;
31545 tHalRmcRulerReqMsg *pRulerReq;
31546
31547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31548
31549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31550 "%s", __func__);
31551
31552 /*-------------------------------------------------------------------------
31553 Sanity check
31554 -------------------------------------------------------------------------*/
31555 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31556 {
31557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31558 "%s: Invalid parameters", __func__);
31559 WDI_ASSERT(0);
31560 return WDI_STATUS_E_FAILURE;
31561 }
31562 pwdiRulerReq = (WDI_RmcRulerReqParams *)pEventData->pEventData;
31563 /*-----------------------------------------------------------------------
31564 Get message buffer
31565 -----------------------------------------------------------------------*/
31566
31567 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31568 WDI_RMC_RULER_REQ,
31569 sizeof(tHalRmcRulerReqParams),
31570 &pSendBuffer, &usDataOffset, &usSendSize))||
31571 ( usSendSize < (usDataOffset +
31572 sizeof(tHalRmcRulerReqParams) )))
31573 {
31574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31575 "Unable to get send buffer in Ruler Req %p ",
31576 pEventData);
31577 WDI_ASSERT(0);
31578 return WDI_STATUS_E_FAILURE;
31579 }
31580
31581 pRulerReq = (tHalRmcRulerReqMsg *)pSendBuffer;
31582 pRulerReq->rulerReqParams.cmd = pwdiRulerReq->cmd;
31583 wpalMemoryCopy(pRulerReq->rulerReqParams.mcastTransmitter,
31584 pwdiRulerReq->mcastTransmitter, WDI_MAC_ADDR_LEN);
31585 wpalMemoryCopy(pRulerReq->rulerReqParams.mcastGroup,
31586 pwdiRulerReq->mcastGroup, WDI_MAC_ADDR_LEN);
31587 wpalMemoryCopy(pRulerReq->rulerReqParams.blacklist,
31588 pwdiRulerReq->blacklist,
31589 WDI_MAC_ADDR_LEN * HAL_NUM_MAX_RULERS);
31590
31591 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31592 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31593
31594 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31595 usSendSize, pWDICtx->pfncRspCB,
31596 pWDICtx->pReqStatusUserData,
31597 WDI_RMC_RULER_RESP);
31598 return wdiStatus;
31599
31600} /* WDI_ProcessRMCRulerReq */
31601
31602/**
31603 @brief Process Update Indication and post it to HAL
31604
31605 @param pWDICtx: pointer to the WLAN DAL context
31606 pEventData: pointer to the event information structure
31607
31608 @see
31609 @return Result of the function call
31610*/
31611WDI_Status
31612WDI_ProcessRMCUpdateInd
31613(
31614 WDI_ControlBlockType* pWDICtx,
31615 WDI_EventInfoType* pEventData
31616)
31617{
31618 wpt_uint8* pSendBuffer = NULL;
31619 wpt_uint16 usDataOffset = 0;
31620 wpt_uint16 usSendSize = 0;
31621 WDI_RmcUpdateIndParams *pwdiUpdateInd = NULL;
31622 tHalRmcUpdateInd *pUpdateInd;
31623 WDI_Status wdiStatus;
31624
31625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31626
31627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31628 "%s", __func__);
31629
31630 /*-------------------------------------------------------------------------
31631 Sanity check
31632 -------------------------------------------------------------------------*/
31633 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31634 {
31635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31636 "%s: Invalid parameters", __func__);
31637 WDI_ASSERT(0);
31638 return WDI_STATUS_E_FAILURE;
31639 }
31640 pwdiUpdateInd = (WDI_RmcUpdateIndParams *)pEventData->pEventData;
31641 /*-----------------------------------------------------------------------
31642 Get message buffer
31643 -----------------------------------------------------------------------*/
31644
31645 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31646 WDI_RMC_UPDATE_IND,
31647 sizeof(tHalRmcUpdateIndParams),
31648 &pSendBuffer, &usDataOffset, &usSendSize))||
31649 ( usSendSize < (usDataOffset +
31650 sizeof(tHalRmcUpdateIndParams) )))
31651 {
31652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31653 "Unable to get send buffer in RMC Update Indication %p ",
31654 pEventData);
31655 WDI_ASSERT(0);
31656 return WDI_STATUS_E_FAILURE;
31657 }
31658
31659 pUpdateInd = (tHalRmcUpdateInd *)pSendBuffer;
31660
31661 pUpdateInd->rulerIndParams.indication = pwdiUpdateInd->indication;
31662 pUpdateInd->rulerIndParams.role = pwdiUpdateInd->role;
31663
31664 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastTransmitter,
31665 pwdiUpdateInd->mcastTransmitter, WDI_MAC_ADDR_LEN);
31666 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastGroup,
31667 pwdiUpdateInd->mcastGroup, WDI_MAC_ADDR_LEN);
31668 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastRuler,
31669 pwdiUpdateInd->mcastRuler, WDI_MAC_ADDR_LEN);
31670 /* Zero out parameters not needed for this command */
31671 wpalMemoryZero(pUpdateInd->rulerIndParams.ruler,
31672 WDI_MAC_ADDR_LEN * HAL_NUM_MAX_RULERS);
31673
31674
31675 /*-------------------------------------------------------------------------
31676 Send Update Indication to HAL
31677 -------------------------------------------------------------------------*/
31678 pWDICtx->wdiReqStatusCB = pwdiUpdateInd->wdiReqStatusCB;
31679 pWDICtx->pReqStatusUserData = pwdiUpdateInd->pUserData;
31680
31681 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
31682
31683 return (wdiStatus != WDI_STATUS_SUCCESS) ?
31684 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
31685
31686} /* WDI_ProcessRMCUpdateInd */
31687
31688/**
31689 @brief Process peer info req
31690
31691 @param pWDICtx: pointer to the WLAN DAL context
31692 pEventData: pointer to the event information structure
31693
31694 @see
31695 @return Result of the function call
31696*/
31697WDI_Status
31698WDI_IbssPeerInfoReq
31699(
31700 WDI_IbssPeerInfoReqType* wdiPeerInfoReqParams,
31701 WDI_IbssPeerInfoReqCb wdiIbssPeerInfoReqCb,
31702 void* pUserData
31703)
31704{
31705
31706 WDI_EventInfoType wdiEventData;
31707
31708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31709 /*------------------------------------------------------------------------
31710 Sanity Check
31711 ------------------------------------------------------------------------*/
31712 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31713 {
31714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31715 "WDI API call before module is initialized - Fail request");
31716
31717 return WDI_STATUS_E_NOT_ALLOWED;
31718 }
31719
31720 /*------------------------------------------------------------------------
31721 Fill in Event data and post to the Main FSM
31722 ------------------------------------------------------------------------*/
31723 wdiEventData.wdiRequest = WDI_HAL_IBSS_PEER_INFO_REQ;
31724 wdiEventData.pEventData = wdiPeerInfoReqParams;
31725 wdiEventData.uEventDataSize = sizeof(WDI_IbssPeerInfoReqType);
31726 wdiEventData.pCBfnc = wdiIbssPeerInfoReqCb;
31727 wdiEventData.pUserData = pUserData;
31728
31729 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31730}
31731
31732/**
31733 @brief Process peer info req
31734
31735 @param pWDICtx: pointer to the WLAN DAL context
31736 pEventData: pointer to the event information structure
31737
31738 @see
31739 @return Result of the function call
31740*/
31741WDI_Status
31742WDI_ProcessIbssPeerInfoReq
31743(
31744 WDI_ControlBlockType* pWDICtx,
31745 WDI_EventInfoType* pEventData
31746)
31747{
31748 WDI_Status wdiStatus;
31749 wpt_uint8* pSendBuffer = NULL;
31750 wpt_uint16 usDataOffset = 0;
31751 wpt_uint16 usSendSize = 0;
31752 WDI_IbssPeerInfoReqType *pwdiInfoReq = NULL;
31753 tHalIbssPeerInfoReq *pPeerInfoReq;
31754 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
31755
31756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31757
31758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31759 "%s", __func__);
31760
31761 /*-------------------------------------------------------------------------
31762 Sanity check
31763 -------------------------------------------------------------------------*/
31764 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31765 {
31766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31767 "%s: Invalid parameters", __func__);
31768 WDI_ASSERT(0);
31769 return WDI_STATUS_E_FAILURE;
31770 }
31771 pwdiInfoReq = (WDI_IbssPeerInfoReqType *)pEventData->pEventData;
31772 /*-----------------------------------------------------------------------
31773 Get message buffer
31774 -----------------------------------------------------------------------*/
31775
31776 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31777 WDI_HAL_IBSS_PEER_INFO_REQ,
31778 sizeof(tHalIbssPeerInfoReqParams),
31779 &pSendBuffer, &usDataOffset, &usSendSize))||
31780 ( usSendSize < (usDataOffset +
31781 sizeof(tHalIbssPeerInfoReqParams) )))
31782 {
31783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31784 "Unable to get send buffer in IBSS Peer Info Req %p ",
31785 pEventData);
31786 WDI_ASSERT(0);
31787 return WDI_STATUS_E_FAILURE;
31788 }
31789
31790 pPeerInfoReq = (tHalIbssPeerInfoReq *)pSendBuffer;
31791 if (VOS_FALSE == pwdiInfoReq->wdiAllPeerInfoReqd)
31792 {
31793 if (pSTATable[pwdiInfoReq->wdiStaIdx].valid)
31794 {
31795 pPeerInfoReq->ibssPeerInfoReqParams.bssIdx =
31796 pSTATable[pwdiInfoReq->wdiStaIdx].bssIdx;
31797 }
31798 else
31799 {
31800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31801 "Unable to find BSSIDX for STAIDX %d ",
31802 pwdiInfoReq->wdiStaIdx);
31803 return WDI_STATUS_E_FAILURE;
31804 }
31805 }
31806 else
31807 pPeerInfoReq->ibssPeerInfoReqParams.bssIdx = 0;
31808
31809 pPeerInfoReq->ibssPeerInfoReqParams.staIdx = pwdiInfoReq->wdiStaIdx;
31810 pPeerInfoReq->ibssPeerInfoReqParams.allPeerInfoReqd = pwdiInfoReq->wdiAllPeerInfoReqd;
31811
31812 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31813 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31814
31815 /*-------------------------------------------------------------------------
31816 Send IBSS Peer Info request to HAL
31817 -------------------------------------------------------------------------*/
31818 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31819 usSendSize, pWDICtx->pfncRspCB,
31820 pWDICtx->pReqStatusUserData,
31821 WDI_HAL_IBSS_PEER_INFO_RSP);
31822 return wdiStatus;
31823}
31824
31825/**
31826 @brief Process peer info resp
31827
31828 @param pWDICtx: pointer to the WLAN DAL context
31829 pEventData: pointer to the event information structure
31830
31831 @see
31832 @return Result of the function call
31833*/
31834WDI_Status
31835WDI_ProcessIbssPeerInfoRsp
31836(
31837 WDI_ControlBlockType* pWDICtx,
31838 WDI_EventInfoType* pEventData
31839)
31840{
31841 WDI_IbssPeerInfoReqCb wdiPeerInfoCb = NULL;
31842 tHalIbssPeerParams *pHalPeerInfoParams;
31843 WDI_IbssPeerInfoRspParams wdiPeerInfoRspParams;
31844 wpt_uint32 allocSize=0;
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031845 WDI_IbssPeerInfoParams *pPeerInfoParams = NULL;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031846 wpt_uint8 wdiCount=0;
31847
31848 /*-------------------------------------------------------------------------
31849 Sanity check
31850 -------------------------------------------------------------------------*/
31851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31852 ( NULL == pEventData->pEventData))
31853 {
31854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31855 "%s: Invalid parameters", __func__);
31856 WDI_ASSERT(0);
31857 return WDI_STATUS_E_FAILURE;
31858 }
31859
31860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31861
31862 wdiPeerInfoCb = (WDI_IbssPeerInfoReqCb)pWDICtx->pfncRspCB;
31863
31864 /*-------------------------------------------------------------------------
31865 Extract response and send it to UMAC
31866 -------------------------------------------------------------------------*/
31867 pHalPeerInfoParams =
31868 ((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->ibssPeerParams;
31869 wdiPeerInfoRspParams.wdiStatus =
31870 WDI_HAL_2_WDI_STATUS(((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->status);
31871 wdiPeerInfoRspParams.wdiNumPeers =
31872 ((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->numOfPeers;
31873
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031874 if (!wdiPeerInfoRspParams.wdiNumPeers) {
31875 wdiPeerInfoRspParams.wdiPeerInfoParams = NULL;
31876 goto error;
31877 }
31878 if (wdiPeerInfoRspParams.wdiNumPeers >=
31879 WDI_MAX_IBSS_PEER_SUPPORED_STAS) {
31880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31881 "Number of stations %d exceed max supported stations %d set max",
31882 wdiPeerInfoRspParams.wdiNumPeers,
31883 WDI_MAX_IBSS_PEER_SUPPORED_STAS);
31884 wdiPeerInfoRspParams.wdiNumPeers =
31885 WDI_MAX_IBSS_PEER_SUPPORED_STAS - 1;
31886 }
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031887 /* Size of peer info data received from DAL */
31888 allocSize = (sizeof(WDI_IbssPeerInfoParams) * (wdiPeerInfoRspParams.wdiNumPeers));
31889
31890 pPeerInfoParams = (WDI_IbssPeerInfoParams*)wpalMemoryAllocate(allocSize);
31891
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031892 if (NULL == pPeerInfoParams)
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031893 {
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31895 "Failed to allocate memory in ibss peer info response %p %p %p ",
31896 pWDICtx, pEventData, pEventData->pEventData);
31897 wdiPeerInfoRspParams.wdiPeerInfoParams = NULL;
31898 goto error;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031899 }
31900
31901 for (wdiCount = 0; wdiCount < wdiPeerInfoRspParams.wdiNumPeers; wdiCount++)
31902 {
31903 tHalIbssPeerParams *pHalTemp = &pHalPeerInfoParams[wdiCount];
31904 WDI_IbssPeerInfoParams *pWdiTemp = &pPeerInfoParams[wdiCount];
31905 pWdiTemp->wdiStaIdx = pHalTemp->staIdx;
31906 pWdiTemp->wdiRssi = pHalTemp->rssi;
31907 pWdiTemp->wdiMcsIndex = pHalTemp->mcsIndex;
31908 pWdiTemp->wdiTxRate = pHalTemp->txRate;
31909 pWdiTemp->wdiTxRateFlags = pHalTemp->txRateFlags;
31910 }
31911
31912 wdiPeerInfoRspParams.wdiPeerInfoParams = pPeerInfoParams;
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031913error:
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031914 /*Notify UMAC*/
31915 if (wdiPeerInfoCb)
31916 {
31917 wdiPeerInfoCb(&wdiPeerInfoRspParams, pWDICtx->pRspCBUserData);
31918 }
31919
31920 /* Free the allocation */
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031921 if(pPeerInfoParams)
31922 vos_mem_free (pPeerInfoParams);
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031923
31924 return WDI_STATUS_SUCCESS;
31925}
31926#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031927#ifdef FEATURE_WLAN_BATCH_SCAN
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031928
Rajeev79dbe4c2013-10-05 11:03:42 +053031929/**
31930 @brief Process stop batch indication from WDA
31931
31932 @param pWDICtx: pointer to the WLAN DAL context
31933 pEventData: pointer to the event information structure
31934
31935 @see
31936 @return Result of the function call
31937*/
31938WDI_Status
31939WDI_ProcessStopBatchScanInd
31940(
31941 WDI_ControlBlockType* pWDICtx,
31942 WDI_EventInfoType* pEventData
31943)
31944{
31945 wpt_uint8* pSendBuffer = NULL;
31946 wpt_uint16 usDataOffset = 0;
31947 wpt_uint16 usSendSize = 0;
31948 WDI_Status wdiStatus;
31949 tHalBatchScanStopIndParam *pHalInd = NULL;
31950 WDI_StopBatchScanIndType *pWdiInd = NULL;
31951
31952
31953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31954
31955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31956 "%s", __func__);
31957
31958 /*-------------------------------------------------------------------------
31959 Sanity check
31960 -------------------------------------------------------------------------*/
31961
31962 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31963 {
31964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31965 "%s: Invalid parameters", __func__);
31966 WDI_ASSERT(0);
31967 return WDI_STATUS_E_FAILURE;
31968 }
31969 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
31970 /*-----------------------------------------------------------------------
31971 Get message buffer
31972 -----------------------------------------------------------------------*/
31973
31974 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31975 WDI_STOP_BATCH_SCAN_IND,
31976 sizeof(tHalBatchScanStopIndParam),
31977 &pSendBuffer, &usDataOffset, &usSendSize))||
31978 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
31979 {
31980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31981 "Unable to get send buffer in stop batch scan ind %p ",
31982 pEventData);
31983 WDI_ASSERT(0);
31984 return WDI_STATUS_E_FAILURE;
31985 }
31986
31987 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
31988 pHalInd->param = pWdiInd->param;
31989
31990 pWDICtx->pReqStatusUserData = NULL;
31991 pWDICtx->pfncRspCB = NULL;
31992 /*-------------------------------------------------------------------------
31993 Send Stop batch scan indication to HAL
31994 -------------------------------------------------------------------------*/
31995 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31996 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31997}
31998
31999/**
32000 @brief This API is called to trigger batch scan results from FW
32001
32002 @param pWDICtx: pointer to the WLAN DAL context
32003 pEventData: pointer to the event information structure
32004
32005 @see
32006 @return Result of the function call
32007*/
32008WDI_Status
32009WDI_ProcessTriggerBatchScanResultInd
32010(
32011 WDI_ControlBlockType* pWDICtx,
32012 WDI_EventInfoType* pEventData
32013)
32014{
32015 WDI_Status wdiStatus;
32016 wpt_uint8* pSendBuffer = NULL;
32017 wpt_uint16 usDataOffset = 0;
32018 wpt_uint16 usSendSize = 0;
32019 tHalBatchScanTriggerResultParam *pHalInd = NULL;
32020 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
32021
32022
32023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32024
32025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32026 "%s", __func__);
32027
32028 /*-------------------------------------------------------------------------
32029 Sanity check
32030 -------------------------------------------------------------------------*/
32031
32032 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32033 {
32034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32035 "%s: Invalid parameters", __func__);
32036 WDI_ASSERT(0);
32037 return WDI_STATUS_E_FAILURE;
32038 }
32039 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
32040 /*-----------------------------------------------------------------------
32041 Get message buffer
32042 -----------------------------------------------------------------------*/
32043
32044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32045 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
32046 sizeof(tHalBatchScanTriggerResultParam),
32047 &pSendBuffer, &usDataOffset, &usSendSize))||
32048 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
32049 {
32050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32051 "Unable to get send buffer in stop batch scan ind %p ",
32052 pEventData);
32053 WDI_ASSERT(0);
32054 return WDI_STATUS_E_FAILURE;
32055 }
32056
32057 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
32058 pHalInd->param = pWdiInd->param;
32059
32060 pWDICtx->pReqStatusUserData = NULL;
32061 pWDICtx->pfncRspCB = NULL;
32062 /*-------------------------------------------------------------------------
32063 Send trigger batch scan result indication to HAL
32064 -------------------------------------------------------------------------*/
32065 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32066 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32067}
32068
32069
32070/**
32071 @brief Process set batch scan response from FW
32072
32073 @param pWDICtx: pointer to the WLAN DAL context
32074 pEventData: pointer to the event information structure
32075
32076 @see
32077 @return Result of the function call
32078*/
32079WDI_Status
32080WDI_ProcessSetBatchScanRsp
32081(
32082 WDI_ControlBlockType* pWDICtx,
32083 WDI_EventInfoType* pEventData
32084)
32085{
32086 WDI_SetBatchScanCb wdiSetBatchScanCb;
32087 WDI_SetBatchScanRspType *pSetBatchScanRsp;
32088
32089 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
32090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32091
32092 /*sanity check*/
32093 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32094 ( NULL == pEventData->pEventData))
32095 {
32096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32097 "%s: Invalid parameters", __func__);
32098 WDI_ASSERT(0);
32099 return WDI_STATUS_E_FAILURE;
32100 }
32101
32102 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
32103 if ( NULL == wdiSetBatchScanCb)
32104 {
32105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32106 "%s: call back function is NULL", __func__);
32107 WDI_ASSERT(0);
32108 return WDI_STATUS_E_FAILURE;
32109 }
32110
32111 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
32112
32113 if (NULL == pSetBatchScanRsp)
32114 {
32115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080032116 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053032117 pWDICtx, pEventData, pEventData->pEventData);
32118 WDI_ASSERT(0);
32119 return WDI_STATUS_E_FAILURE;
32120 }
32121
Sunil Duttbd736ed2014-05-26 21:19:41 +053032122 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032123 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
32124
32125 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
32126
Sunil Duttbd736ed2014-05-26 21:19:41 +053032127 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032128 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
32129
32130 wpalMemoryFree(pSetBatchScanRsp);
32131
32132 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032133}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053032134
32135/**
32136 @brief Process batch scan result indication from FW
32137
32138 @param pWDICtx: pointer to the WLAN DAL context
32139 pEventData: pointer to the event information structure
32140
32141 @see
32142 @return Result of the function call
32143*/
32144WDI_Status
32145WDI_ProcessBatchScanResultInd
32146(
32147 WDI_ControlBlockType* pWDICtx,
32148 WDI_EventInfoType* pEventData
32149)
32150{
32151 void *pBatchScanResultInd;
32152 WDI_LowLevelIndType wdiInd;
32153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32154
Sunil Duttbd736ed2014-05-26 21:19:41 +053032155 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053032156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32157 ( NULL == pEventData->pEventData))
32158 {
32159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32160 "%s: Invalid parameters", __func__);
32161 WDI_ASSERT(0);
32162 return WDI_STATUS_E_FAILURE;
32163 }
32164
Sunil Duttbd736ed2014-05-26 21:19:41 +053032165 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032166 pBatchScanResultInd = (void *)pEventData->pEventData;
32167
Sunil Duttbd736ed2014-05-26 21:19:41 +053032168 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053032169 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
32170
32171 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
32172
Sunil Duttbd736ed2014-05-26 21:19:41 +053032173 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032174 if (pWDICtx->wdiLowLevelIndCB)
32175 {
32176 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32177 }
32178 else
32179 {
32180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32181 "%s: WDILowLevelIndCb is null", __func__);
32182 WDI_ASSERT(0);
32183 return WDI_STATUS_E_FAILURE;
32184 }
32185
32186 return WDI_STATUS_SUCCESS;
32187} /*End of WDI_ProcessBatchScanResultInd*/
32188
Sunil Duttbd736ed2014-05-26 21:19:41 +053032189#ifdef WLAN_FEATURE_LINK_LAYER_STATS
32190/**
32191 @brief Process Link Layer Statistics Result indication from FW
32192
32193 @param pWDICtx: pointer to the WLAN DAL context
32194 pEventData: pointer to the event information structure
32195
32196 @see
32197 @return Result of the function call
32198*/
32199WDI_Status
32200WDI_ProcessLinkLayerStatsResultsInd
32201(
32202 WDI_ControlBlockType* pWDICtx,
32203 WDI_EventInfoType* pEventData
32204)
32205{
32206 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053032207 WDI_LLstatsResultsType *halLLStatsResults;
32208 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032209 WDI_LowLevelIndType wdiInd;
32210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32211
32212 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32213 "%s: Event RESULTS Indication", __func__);
32214
32215 /* sanity check */
32216 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32217 ( NULL == pEventData->pEventData))
32218 {
32219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32220 "%s: Invalid parameters", __func__);
32221 WDI_ASSERT(0);
32222 return WDI_STATUS_E_FAILURE;
32223 }
32224
32225 /* extract response and send it to UMAC */
32226 pLinkLayerStatsInd = (void *)pEventData->pEventData;
32227
32228 /* Fill in the indication parameters */
32229 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
32230
Dino Mycled3d50022014-07-07 12:58:25 +053032231 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
32232 = pLinkLayerStatsInd;
32233
32234 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
32235
32236
32237 /* Need to fill in the MAC address */
32238 if ( WDI_STATUS_SUCCESS !=
32239 WDI_STATableGetStaMacAddr(pWDICtx,
32240 halLLStatsResults->iface_id,
32241 &macAddr))
32242 {
32243 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32244 " ifaceId: %u does not exist in the WDI Station Table",
32245 halLLStatsResults->iface_id);
32246
32247 return WDI_STATUS_E_FAILURE;
32248 }
32249 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
32250 macAddr, WDI_MAC_ADDR_LEN);
32251
32252 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32253 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
32254 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053032255
32256 /* Notify UMAC */
32257 if (pWDICtx->wdiLowLevelIndCB)
32258 {
32259 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32260 }
32261 else
32262 {
32263 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32264 "%s: WDILowLevelIndCb is null", __func__);
32265 WDI_ASSERT(0);
32266 return WDI_STATUS_E_FAILURE;
32267 }
32268
32269 return WDI_STATUS_SUCCESS;
32270} /* End of WDI_ProcessLinkLayerStatsResultsInd */
32271#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
32272
Rajeev79dbe4c2013-10-05 11:03:42 +053032273/**
32274 @brief WDI_ProcessSetBatchScanReq -
32275 Set batch scan request to FW
32276
32277 @param pWDICtx : wdi context
32278 pEventData : indication data
32279
32280 @see
32281 @return none
32282*/
32283WDI_Status WDI_ProcessSetBatchScanReq
32284(
32285 WDI_ControlBlockType* pWDICtx,
32286 WDI_EventInfoType* pEventData
32287)
32288{
32289 WDI_SetBatchScanReqType *pWdiReq;
32290 WDI_Status wdiStatus;
32291 wpt_uint8* pSendBuffer = NULL;
32292 wpt_uint16 usDataOffset = 0;
32293 wpt_uint16 usSendSize = 0;
32294 tHalBatchScanSetParams *pHalReq;
32295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32296
32297 /*sanity check*/
32298 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
32299 {
32300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32301 "%s: Invalid parameters in set batch scan request", __func__);
32302 WDI_ASSERT(0);
32303 return WDI_STATUS_E_FAILURE;
32304 }
32305
32306
32307 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
32308
32309
32310 /*get message buffer*/
32311 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
32312 WDI_SET_BATCH_SCAN_REQ,
32313 sizeof(tHalBatchScanSetParams),
32314 &pSendBuffer, &usDataOffset, &usSendSize))||
32315 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
32316 {
32317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32318 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
32319 WDI_ASSERT(0);
32320 return WDI_STATUS_E_FAILURE;
32321 }
32322
32323 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
32324
32325 pHalReq->rtt = pWdiReq->rtt;
32326 pHalReq->rfBand = pWdiReq->rfBand;
32327 pHalReq->bestNetworks = pWdiReq->bestNetwork;
32328 pHalReq->scanInterval = pWdiReq->scanFrequency;
32329 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
32330
32331 /*send set batch scan request to fw*/
32332 pWDICtx->pfncRspCB = pEventData->pCBfnc;
32333 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32334
32335 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
32336 usSendSize, pWDICtx->pfncRspCB,
32337 pWDICtx->pReqStatusUserData,
32338 WDI_SET_BATCH_SCAN_RESP);
32339
32340 return wdiStatus;
32341}
32342
32343/**
32344 @brief WDI_SetBatchScanReq
32345 This API is called to set batch scan request in FW
32346
32347 @param pBatchScanReqParam : pointer to set batch scan re param
32348 usrData : Client context
32349 setBatchScanRspCb : set batch scan resp callback
32350 @see
32351 @return SUCCESS or FAIL
32352*/
32353WDI_Status WDI_SetBatchScanReq
32354(
32355 void *pBatchScanReqParam,
32356 void *usrData,
32357 WDI_SetBatchScanCb setBatchScanRspCb
32358)
32359{
32360 WDI_EventInfoType wdiEventData;
32361
32362 /*sanity check*/
32363 if (eWLAN_PAL_FALSE == gWDIInitialized)
32364 {
32365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32366 "WDI API call before module is initialized - Fail request");
32367
32368 return WDI_STATUS_E_NOT_ALLOWED;
32369 }
32370
32371 /* fill in event data and post to the main FSM */
32372 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
32373 wdiEventData.pEventData = pBatchScanReqParam;
32374 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
32375 wdiEventData.pCBfnc = setBatchScanRspCb;
32376 wdiEventData.pUserData = usrData;
32377
32378 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32379}
32380
32381/**
32382 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
32383
32384 @param None
32385
32386 @see
32387
32388 @return Status of the request
32389*/
32390WDI_Status
32391WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
32392{
32393 WDI_EventInfoType wdiEventData;
32394
32395 /*-------------------------------------------------------------------------
32396 Sanity Check
32397 ------------------------------------------------------------------------*/
32398 if (eWLAN_PAL_FALSE == gWDIInitialized)
32399 {
32400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32401 "WDI API call before module is initialized - Fail request!");
32402
32403 return WDI_STATUS_E_NOT_ALLOWED;
32404 }
32405
32406 /*-------------------------------------------------------------------------
32407 Fill in Event data and post to the Main FSM
32408 ------------------------------------------------------------------------*/
32409 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
32410 wdiEventData.pEventData = pWdiReq;
32411 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
32412 wdiEventData.pCBfnc = NULL;
32413 wdiEventData.pUserData = NULL;
32414
32415 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32416}
32417
32418/**
32419 @brief WDI_TriggerBatchScanResultInd
32420 This API is called to pull batch scan result from FW
32421
32422 @param pWdiReq : pointer to get batch scan ind param
32423 @see
32424 @return SUCCESS or FAIL
32425*/
32426WDI_Status WDI_TriggerBatchScanResultInd
32427(
32428 WDI_TriggerBatchScanResultIndType *pWdiReq
32429)
32430{
32431 WDI_EventInfoType wdiEventData;
32432 /*-------------------------------------------------------------------------
32433 Sanity Check
32434 ------------------------------------------------------------------------*/
32435 if (eWLAN_PAL_FALSE == gWDIInitialized)
32436 {
32437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32438 "WDI API call before module is initialized - Fail request!");
32439
32440 return WDI_STATUS_E_NOT_ALLOWED;
32441 }
32442
32443 /*-------------------------------------------------------------------------
32444 Fill in Event data and post to the Main FSM
32445 ------------------------------------------------------------------------*/
32446 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
32447 wdiEventData.pEventData = pWdiReq;
32448 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
32449 wdiEventData.pCBfnc = NULL;
32450 wdiEventData.pUserData = NULL;
32451
32452 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32453}
Rajeev79dbe4c2013-10-05 11:03:42 +053032454#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080032455
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080032456/**
32457 @brief Process Update Channel Rsp function (called when a response is
32458 being received over the bus from HAL)
32459
32460 @param pWDICtx: pointer to the WLAN DAL context
32461 pEventData: pointer to the event information structure
32462
32463 @see
32464 @return Result of the function call
32465*/
32466WDI_Status
32467WDI_ProcessUpdateChanRsp
32468(
32469 WDI_ControlBlockType* pWDICtx,
32470 WDI_EventInfoType* pEventData
32471)
32472{
32473 WDI_Status wdiStatus;
32474 eHalStatus halStatus;
32475 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
32476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32477
32478 /*-------------------------------------------------------------------------
32479 Sanity check
32480 -------------------------------------------------------------------------*/
32481 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32482 ( NULL == pEventData->pEventData))
32483 {
32484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32485 "%s: Invalid parameters", __func__);
32486 WDI_ASSERT(0);
32487 return WDI_STATUS_E_FAILURE;
32488 }
32489
32490 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
32491
32492 /*-------------------------------------------------------------------------
32493 Extract response and send it to UMAC
32494 -------------------------------------------------------------------------*/
32495 halStatus = *((eHalStatus*)pEventData->pEventData);
32496 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
32497
32498 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
32499
32500 return WDI_STATUS_SUCCESS;
32501}/*WDI_ProcessUpdateChanRsp*/
32502
Leo Chang0b0e45a2013-12-15 15:18:55 -080032503#ifdef FEATURE_WLAN_CH_AVOID
32504/**
32505 @brief v -WDI_ProcessChAvoidInd
32506
32507
32508 @param pWDICtx : wdi context
32509 pEventData : indication data
32510 @see
32511 @return Result of the function call
32512*/
32513WDI_Status
32514WDI_ProcessChAvoidInd
32515(
32516 WDI_ControlBlockType* pWDICtx,
32517 WDI_EventInfoType* pEventData
32518)
32519{
32520 WDI_LowLevelIndType wdiInd;
32521 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
32522 wpt_uint16 rangeLoop;
Abhishek Singhf5590652016-02-09 16:53:03 +053032523 wpt_uint32 dataSize;
Leo Chang0b0e45a2013-12-15 15:18:55 -080032524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32525
32526 /*-------------------------------------------------------------------------
32527 Sanity check
32528 -------------------------------------------------------------------------*/
32529 if ((NULL == pWDICtx) || (NULL == pEventData) ||
32530 (NULL == pEventData->pEventData))
32531 {
32532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32533 "%s: Invalid parameters", __func__);
32534 WDI_ASSERT(0);
32535 return WDI_STATUS_E_FAILURE;
32536 }
32537
Abhishek Singhf5590652016-02-09 16:53:03 +053032538 dataSize = sizeof(tHalAvoidFreqRangeIndParams);
32539 if (dataSize > pEventData->uEventDataSize)
32540 dataSize = pEventData->uEventDataSize;
32541
Leo Chang0b0e45a2013-12-15 15:18:55 -080032542 /*-------------------------------------------------------------------------
32543 Extract indication and send it to UMAC
32544 -------------------------------------------------------------------------*/
32545 wpalMemoryCopy(&chAvoidIndicationParam,
32546 pEventData->pEventData,
Abhishek Singhf5590652016-02-09 16:53:03 +053032547 dataSize);
Leo Chang0b0e45a2013-12-15 15:18:55 -080032548
Abhishek Singhe34eb552015-06-18 10:12:15 +053032549 /* Avoid Over flow */
32550 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
32551 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
32552
Leo Chang0b0e45a2013-12-15 15:18:55 -080032553 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
32554 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
32555 chAvoidIndicationParam.avoidCnt;
32556 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
32557 (void *)chAvoidIndicationParam.avoidRange,
32558 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
32559 sizeof(WDI_ChAvoidFreqType));
32560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32561 "%s: band count %d", __func__,
32562 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
32563 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
32564 {
32565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32566 "%s: srart freq %d, end freq %d", __func__,
32567 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
32568 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
32569 }
32570
32571 /*Notify UMAC*/
32572 if (pWDICtx->wdiLowLevelIndCB)
32573 {
32574 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
32575 }
32576
32577 return WDI_STATUS_SUCCESS;
32578}
Atul Mittalc0f739f2014-07-31 13:47:47 +053032579
Leo Chang0b0e45a2013-12-15 15:18:55 -080032580#endif /* FEATURE_WLAN_CH_AVOID */
32581
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053032582/**
32583 @brief Process OBSS Start scan result indication
32584
32585 @param pWDICtx: pointer to the WLAN DAL context
32586 pEventData: pointer to the event information structure
32587
32588 @see
32589 @return Result of the function call
32590*/
32591WDI_Status
32592WDI_ProcessHT40OBSSScanInd
32593(
32594 WDI_ControlBlockType* pWDICtx,
32595 WDI_EventInfoType* pEventData
32596)
32597{
32598 wpt_uint8* pSendBuffer = NULL;
32599 wpt_uint16 usDataOffset = 0;
32600 wpt_uint16 usSendSize = 0;
32601 wpt_uint16 usLen = 0;
32602 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
32603 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
32604 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
32605 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
32606
32607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32608
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053032609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053032610 "%s", __func__);
32611
32612 /*-------------------------------------------------------------------------
32613 Sanity check
32614 -------------------------------------------------------------------------*/
32615 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32616 {
32617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32618 "%s: Invalid parameters", __func__);
32619 WDI_ASSERT(0);
32620 return WDI_STATUS_E_FAILURE;
32621 }
32622 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
32623
32624 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
32625 /*-----------------------------------------------------------------------
32626 Get message buffer
32627 -----------------------------------------------------------------------*/
32628
32629 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32630 WDI_START_HT40_OBSS_SCAN_IND,
32631 sizeof(tHT40ObssScanIndType),
32632 &pSendBuffer, &usDataOffset, &usSendSize))||
32633 ( usSendSize < (usDataOffset + usLen )))
32634 {
32635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32636 "Unable to get send buffer in HT40 OBSS Start req %p ",
32637 pEventData);
32638 WDI_ASSERT(0);
32639 return WDI_STATUS_E_FAILURE;
32640 }
32641 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
32642 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
32643 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
32644 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
32645 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
32646 pHT40ObssScanInd->OBSSScanActiveDwellTime =
32647 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
32648 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
32649 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
32650 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
32651 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
32652 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
32653 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
32654 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
32655 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
32656 pHT40ObssScanInd->OBSSScanActivityThreshold =
32657 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
32658 pHT40ObssScanInd->selfStaIdx =
32659 pwdiHT40OBSSScanInd->selfStaIdx;
32660 pHT40ObssScanInd->bssIdx =
32661 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053032662 pHT40ObssScanInd->currentOperatingClass =
32663 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053032664 pHT40ObssScanInd->fortyMHZIntolerent =
32665 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
32666 pHT40ObssScanInd->channelCount =
32667 pwdiHT40OBSSScanInd->channelCount;
32668
32669 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
32670 WDI_ROAM_SCAN_MAX_CHANNELS);
32671 pHT40ObssScanInd->ieFieldLen =
32672 pwdiHT40OBSSScanInd->ieFieldLen;
32673
32674 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
32675 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
32676 pWDICtx->pReqStatusUserData = NULL;
32677 pWDICtx->pfncRspCB = NULL;
32678
32679 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
32680 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
32681
32682 /*-------------------------------------------------------------------------
32683 Send OBSS Start Indication to HAL
32684 -------------------------------------------------------------------------*/
32685 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32686 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32687
32688} /*End of WDI_ProcessHT40OBSSStartScanInd*/
32689
32690
32691/**
32692 @brief wdi_HT40OBSSScanInd
32693 This API is called to start OBSS scan
32694
32695 @param pWdiReq : pointer to get ind param
32696 @see
32697 @return SUCCESS or FAIL
32698*/
32699WDI_Status WDI_HT40OBSSScanInd
32700(
32701 WDI_HT40ObssScanParamsType *pWdiReq
32702)
32703{
32704 WDI_EventInfoType wdiEventData;
32705
32706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32707 "%s", __func__);
32708 /*-------------------------------------------------------------------------
32709 Sanity Check
32710 ------------------------------------------------------------------------*/
32711 if (eWLAN_PAL_FALSE == gWDIInitialized)
32712 {
32713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32714 "WDI API call before module is initialized - Fail request!");
32715
32716 return WDI_STATUS_E_NOT_ALLOWED;
32717 }
32718
32719 /*-------------------------------------------------------------------------
32720 Fill in Event data and post to the Main FSM
32721 ------------------------------------------------------------------------*/
32722 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
32723 wdiEventData.pEventData = pWdiReq;
32724 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
32725 wdiEventData.pCBfnc = NULL;
32726 wdiEventData.pUserData = NULL;
32727
32728
32729 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32730}
32731
32732/**
32733 @brief Process OBSS Stop scan result
32734
32735 @param pWDICtx: pointer to the WLAN DAL context
32736 pEventData: pointer to the event information structure
32737
32738 @see
32739 @return Result of the function call
32740*/
32741WDI_Status
32742WDI_ProcessHT40OBSSStopScanInd
32743(
32744 WDI_ControlBlockType* pWDICtx,
32745 WDI_EventInfoType* pEventData
32746)
32747{
32748 wpt_uint8* pSendBuffer = NULL;
32749 wpt_uint16 usDataOffset = 0;
32750 wpt_uint16 usSendSize = 0;
32751 wpt_uint16 usLen = 0;
32752 wpt_uint8 *wdiBssIdx = 0;
32753 tANI_U8 *bssIdx = 0;
32754 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
32755
32756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32757
32758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32759 "%s", __func__);
32760
32761 /*-------------------------------------------------------------------------
32762 Sanity check
32763 -------------------------------------------------------------------------*/
32764 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32765 {
32766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32767 "%s: Invalid parameters", __func__);
32768 WDI_ASSERT(0);
32769 return WDI_STATUS_E_FAILURE;
32770 }
32771 bssIdx = (wpt_uint8*)pEventData->pEventData;
32772 /*-----------------------------------------------------------------------
32773 Get message buffer
32774 -----------------------------------------------------------------------*/
32775
32776 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32777 WDI_STOP_HT40_OBSS_SCAN_IND,
32778 sizeof(tANI_U8),
32779 &pSendBuffer, &usDataOffset, &usSendSize))||
32780 ( usSendSize < (usDataOffset + usLen )))
32781 {
32782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32783 "Unable to get send buffer in HT40 OBSS Start req %p ",
32784 pEventData);
32785 WDI_ASSERT(0);
32786 return WDI_STATUS_E_FAILURE;
32787 }
32788
32789 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
32790 bssIdx = wdiBssIdx;
32791
32792 pWDICtx->pReqStatusUserData = NULL;
32793 pWDICtx->pfncRspCB = NULL;
32794
32795 /*-------------------------------------------------------------------------
32796 Send DHCP Start Indication to HAL
32797 -------------------------------------------------------------------------*/
32798 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32799 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32800} /*End of WDI_ProcessHT40OBSSStopScanInd*/
32801
32802/**
32803 @brief WDI_HT40OBSSStopScanInd
32804 This API is called to start OBSS scan
32805 @param pWdiReq : pointer to get ind param
32806 @see
32807 @return SUCCESS or FAIL
32808*/
32809WDI_Status WDI_HT40OBSSStopScanInd
32810(
32811 wpt_uint8 bssIdx
32812)
32813{
32814 WDI_EventInfoType wdiEventData;
32815
32816 /*-------------------------------------------------------------------------
32817 Sanity Check
32818 ------------------------------------------------------------------------*/
32819 if (eWLAN_PAL_FALSE == gWDIInitialized)
32820 {
32821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32822 "WDI API call before module is initialized - Fail request!");
32823
32824 return WDI_STATUS_E_NOT_ALLOWED;
32825 }
32826
32827 /*-------------------------------------------------------------------------
32828 Fill in Event data and post to the Main FSM
32829 ------------------------------------------------------------------------*/
32830 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
32831 wdiEventData.pEventData = &bssIdx;
32832 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
32833 wdiEventData.pCBfnc = NULL;
32834 wdiEventData.pUserData = NULL;
32835
32836 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32837}
32838
c_hpothu86041002014-04-14 19:06:51 +053032839WDI_Status
32840WDI_printRegInfo
32841(
32842 WDI_ControlBlockType* pWDICtx,
32843 WDI_EventInfoType* pEventData
32844)
32845{
32846 tHalRegDebugInfo *pRegTable;
32847 tHalRegDebugInfoParams *pRegParams;
32848 uint32 cnt=0;
32849
32850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32851 "%s: ", __func__);
32852 /*-------------------------------------------------------------------------
32853 Sanity check
32854 -------------------------------------------------------------------------*/
32855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32856 ( NULL == pEventData->pEventData))
32857 {
32858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32859 "%s: Invalid parameters", __func__);
32860 WDI_ASSERT(0);
32861 return WDI_STATUS_E_FAILURE;
32862 }
32863
32864 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
32865
32866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32867 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
32868 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
32869
32870 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
32871
32872 if (pRegParams->regCount <= 0)
32873 {
32874 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32875 "%s incorrect parameters passed", __func__);
32876 return WDI_STATUS_E_FAILURE;
32877 }
32878
32879 while(pRegParams->regCount--)
32880 {
32881 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32882 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
32883 cnt++;
32884 }
32885
32886 return WDI_STATUS_SUCCESS;
32887}
c_hpothu92367912014-05-01 15:18:17 +053032888
32889/*
Abhishek Singh66c16762014-08-14 19:13:19 +053032890 * FUNCTION: WDI_delBaInd
32891 * send the delBA to peer.
32892 */
32893
32894WDI_Status
32895WDI_delBaInd
32896(
32897 WDI_ControlBlockType* pWDICtx,
32898 WDI_EventInfoType* pEventData
32899
32900)
32901{
32902 tHalWlanDelBaIndMsg halDelBaInd;
32903 WDI_LowLevelIndType wdiInd;
32904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32905
32906 /*-------------------------------------------------------------------------
32907 Sanity check
32908 -------------------------------------------------------------------------*/
32909 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32910 ( NULL == pEventData->pEventData))
32911 {
32912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32913 "%s: Invalid parameters", __func__);
32914 WDI_ASSERT(0);
32915 return WDI_STATUS_E_FAILURE;
32916 }
32917
32918 /*-------------------------------------------------------------------------
32919 Extract indication and send it to UMAC
32920 -------------------------------------------------------------------------*/
32921
32922 /* Parameters need to be unpacked according to HAL struct*/
32923 wpalMemoryCopy( &halDelBaInd,
32924 pEventData->pEventData,
32925 sizeof(halDelBaInd));
32926
32927 /*Fill in the indication parameters*/
32928 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
32929
32930 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
32931 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
32932 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
32933
32934 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
32935 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
32936 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
32937
32938 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
32939 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
32940 if ( pWDICtx->wdiLowLevelIndCB )
32941 {
32942 /*Notify UMAC*/
32943 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32944 }
32945
32946 return WDI_STATUS_SUCCESS;
32947
32948
32949}
32950
32951/*
c_hpothu92367912014-05-01 15:18:17 +053032952 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
32953 * send the response to PE with beacon miss count
32954 * received from WDI.
32955 */
32956WDI_Status
32957WDI_ProcessGetBcnMissRateRsp
32958(
32959 WDI_ControlBlockType* pWDICtx,
32960 WDI_EventInfoType* pEventData
32961)
32962{
32963 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
32964 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
32965
32966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32967 "In %s",__func__);
32968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32969
32970 /*-------------------------------------------------------------------------
32971 Sanity check
32972 -------------------------------------------------------------------------*/
32973 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32974 ( NULL == pEventData->pEventData))
32975 {
32976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32977 "%s: Invalid parameters", __func__);
32978 WDI_ASSERT(0);
32979 return WDI_STATUS_E_FAILURE;
32980 }
32981
32982 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
32983 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
32984
32985 /*Notify UMAC*/
32986 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
32987 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
32988 return WDI_STATUS_SUCCESS;
32989}
32990
32991/*
32992 * FUNCTION: WDI_ProcessGetBcnMissRateReq
32993 * Request to WDI to get missed beacon rate.
32994 */
32995WDI_Status
32996WDI_ProcessGetBcnMissRateReq
32997(
32998 WDI_ControlBlockType* pWDICtx,
32999 WDI_EventInfoType* pEventData
33000)
33001{
33002 wpt_uint8* pSendBuffer = NULL;
33003 wpt_uint16 usDataOffset = 0;
33004 wpt_uint16 usSendSize = 0;
33005 wpt_uint8 ucCurrentBSSSesIdx = 0;
33006 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053033007 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
33008 tHalBcnMissRateReqParams halBcnMissRateReq;
33009
33010/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33011
33012 /*-------------------------------------------------------------------------
33013 Sanity check
33014 -------------------------------------------------------------------------*/
33015 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33016 ( NULL == pEventData->pCBfnc ) )
33017 {
33018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33019 "%s: Invalid parameters", __func__);
33020 WDI_ASSERT(0);
33021 return WDI_STATUS_E_FAILURE;
33022 }
33023
33024 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
33025
33026 wpalMutexAcquire(&pWDICtx->wptMutex);
33027
33028 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
33029 pEventData->pEventData, &pBSSSes);
33030 if ( NULL == pBSSSes )
33031 {
33032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33033 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053033034 MAC_ADDRESS_STR, __func__,
33035 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053033036 wpalMutexRelease(&pWDICtx->wptMutex);
33037 return WDI_STATUS_E_NOT_ALLOWED;
33038 }
33039 wpalMutexRelease(&pWDICtx->wptMutex);
33040
33041 /*-----------------------------------------------------------------------
33042 Get message buffer
33043 -----------------------------------------------------------------------*/
33044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33045 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
33046 sizeof(tHalBcnMissRateReqParams),
33047 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33048 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
33049 {
33050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33051 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
33052 pEventData);
33053 WDI_ASSERT(0);
33054 return WDI_STATUS_E_FAILURE;
33055 }
33056
33057 pWDICtx->wdiReqStatusCB = NULL;
33058 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33059
33060 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
33061
33062 wpalMemoryCopy( pSendBuffer+usDataOffset,
33063 &halBcnMissRateReq,
33064 sizeof(tHalBcnMissRateReqParams));
33065 /*-------------------------------------------------------------------------
33066 Send Get STA Request to HAL
33067 -------------------------------------------------------------------------*/
33068 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
33069 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
33070}
33071
33072/**
33073 @brief WDI_GetBcnMissRate
33074
33075 @param pUserData: user data will be passed back with the
33076 callback
33077 WDI_GetBcnMissRateCb: callback for passing back the response
33078 of the get stats operation received from the device
33079 bssid: bssid, to send bssIdx to FW
33080
33081 @return SUCCESS or FAIL
33082*/
33083WDI_Status WDI_GetBcnMissRate( void *pUserData,
33084 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
33085 tANI_U8 *bssid )
33086{
33087 WDI_EventInfoType wdiEventData;
33088
33089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33090
33091 /*------------------------------------------------------------------------
33092 Sanity Check
33093 ------------------------------------------------------------------------*/
33094 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33095 {
33096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33097 "WDI API call before module is initialized - Fail request");
33098
33099 return WDI_STATUS_E_NOT_ALLOWED;
33100 }
33101
33102 /*------------------------------------------------------------------------
33103 Fill in Event data and post to the Main FSM
33104 ------------------------------------------------------------------------*/
33105 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
33106 wdiEventData.pEventData = bssid;
33107 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
33108 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
33109 wdiEventData.pUserData = pUserData;
33110
33111 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33112}
Abhishek Singh85b74712014-10-08 11:38:19 +053033113
33114/*
33115 * FUNCTION: WDI_ProcessGetFwStatsRsp
33116 * send the response with FW stats asked.
33117 */
33118WDI_Status
33119 WDI_ProcessGetFwStatsRsp
33120(
33121 WDI_ControlBlockType* pWDICtx,
33122 WDI_EventInfoType* pEventData
33123)
33124{
33125 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
33126 tpHalfwStatsRspParams pHalFwstatsRsp;
33127 WDI_FWStatsResults fwStats;
33128
33129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33130
33131 /*-------------------------------------------------------------------------
33132 Sanity check
33133 -------------------------------------------------------------------------*/
33134 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33135 ( NULL == pEventData->pEventData))
33136 {
33137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33138 "%s: Invalid parameters", __func__);
33139 WDI_ASSERT(0);
33140 return WDI_STATUS_E_FAILURE;
33141 }
33142 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
33143 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
33144
33145 if(pHalFwstatsRsp->length)
33146 {
33147 switch( pHalFwstatsRsp->type )
33148 {
33149 case FW_UBSP_STATS:
33150 {
33151 ubspFwStats *ubspStatsfromFw;
33152
33153 fwStats.type = pHalFwstatsRsp->type;
33154 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
33155 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
33156 ubspStatsfromFw->ubsp_enter_cnt;
33157 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
33158 ubspStatsfromFw->ubsp_jump_ddr_cnt;
33159 }
33160 break;
33161 default:
33162 {
33163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33164 "%s: No handling for stats type %d", __func__,
33165 pHalFwstatsRsp->type);
33166 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
33167 NULL, pWDICtx->pRspCBUserData);
33168 return WDI_STATUS_E_FAILURE;
33169 }
33170 }
33171 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
33172 }
33173 else
33174 {
33175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33176 "%s: Length = 0 for type %d return failure ", __func__,
33177 pHalFwstatsRsp->type);
33178 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
33179 NULL, pWDICtx->pRspCBUserData);
33180 return WDI_STATUS_E_FAILURE;
33181 }
33182 return WDI_STATUS_SUCCESS;
33183}
33184
33185/*
33186 * FUNCTION: WDI_ProcessGetFwStatsReq
33187 * Request to WDI to get FW Stats.
33188 */
33189WDI_Status
33190 WDI_ProcessGetFwStatsReq
33191(
33192 WDI_ControlBlockType* pWDICtx,
33193 WDI_EventInfoType* pEventData
33194)
33195{
33196 wpt_uint8* pSendBuffer = NULL;
33197 wpt_uint16 usDataOffset = 0;
33198 wpt_uint16 usSendSize = 0;
33199 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
33200 tHalfwStatsReqParams halFwStatsReq;
33201
33202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33203
33204 /*-------------------------------------------------------------------------
33205 Sanity check
33206 -------------------------------------------------------------------------*/
33207 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33208 ( NULL == pEventData->pCBfnc ) )
33209 {
33210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33211 "%s: Invalid parameters", __func__);
33212 WDI_ASSERT(0);
33213 return WDI_STATUS_E_FAILURE;
33214 }
33215
33216 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
33217
33218 /*-----------------------------------------------------------------------
33219 Get message buffer
33220 -----------------------------------------------------------------------*/
33221 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33222 pWDICtx, WDI_GET_FW_STATS_REQ,
33223 sizeof(tHalfwStatsReqParams),
33224 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33225 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
33226 {
33227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33228 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
33229 pEventData);
33230 WDI_ASSERT(0);
33231 return WDI_STATUS_E_FAILURE;
33232 }
33233
33234 pWDICtx->wdiReqStatusCB = NULL;
33235 pWDICtx->pReqStatusUserData = pEventData->pEventData;
33236 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
33237 wpalMemoryCopy( pSendBuffer+usDataOffset,
33238 &halFwStatsReq,
33239 sizeof(tHalfwStatsReqParams));
33240 /*-------------------------------------------------------------------------
33241 Send Get STA Request to HAL
33242 -------------------------------------------------------------------------*/
33243 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
33244 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
33245}
33246
Sunil Duttbd736ed2014-05-26 21:19:41 +053033247#ifdef WLAN_FEATURE_LINK_LAYER_STATS
33248
33249/**
33250 @brief WDI_LLStatsSetReq
33251 This API is called to set link layer stats request in FW
33252
33253 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
33254 wdiLLStatsSetRspCb : set link layer stats resp callback
33255 usrData : Client context
33256 @see
33257 @return SUCCESS or FAIL
33258*/
33259WDI_Status
33260WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
33261 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
33262 void* pUserData)
33263{
33264 WDI_EventInfoType wdiEventData;
33265
33266 /*------------------------------------------------------------------------
33267 Sanity Check
33268 ------------------------------------------------------------------------*/
33269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33270 {
33271 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33272 "WDI API call before module is initialized - Fail request");
33273
33274 return WDI_STATUS_E_NOT_ALLOWED;
33275 }
33276
33277 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
33278 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
33279 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
33280 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
33281 wdiEventData.pUserData = pUserData;
33282
33283 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33284}
33285
33286/**
33287 @brief WDI_ProcessLLStatsSetReq -
33288 Set Link Layer Stats request to FW
33289
33290 @param pWDICtx : wdi context
33291 pEventData : indication data
33292
33293 @see
33294 @return none
33295*/
33296WDI_Status
33297WDI_ProcessLLStatsSetReq
33298(
33299 WDI_ControlBlockType* pWDICtx,
33300 WDI_EventInfoType* pEventData
33301)
33302{
33303 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
33304 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
33305 wpt_uint8* pSendBuffer = NULL;
33306 wpt_uint16 usSendSize = 0;
33307 wpt_uint16 usDataOffset = 0;
33308 tHalMacLlSetStatsReqParams halLLStatsSetParams;
33309
33310 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33311 ( NULL == pEventData->pCBfnc ))
33312 {
33313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33314 "%s: Invalid parameters", __func__);
33315 WDI_ASSERT(0);
33316 return WDI_STATUS_E_FAILURE;
33317 }
33318
33319 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
33320 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
33321
33322 /*-----------------------------------------------------------------------
33323 Get message buffer
33324 ! TO DO : proper conversion into the HAL Message Request Format
33325 -----------------------------------------------------------------------*/
33326 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33327 pWDICtx,
33328 WDI_LL_STATS_SET_REQ,
33329 sizeof(tHalMacLlSetStatsReqParams),
33330 &pSendBuffer, &usDataOffset,
33331 &usSendSize))||
33332 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
33333 {
33334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33335 "Unable to get send buffer in %s %p %p %p", __func__,
33336 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
33337 WDI_ASSERT(0);
33338 return WDI_STATUS_E_FAILURE;
33339 }
33340
33341
Dino Mycled3d50022014-07-07 12:58:25 +053033342 /* Need to fill in the self STA Index */
33343 if ( WDI_STATUS_SUCCESS !=
33344 WDI_STATableFindStaidByAddr(pWDICtx,
33345 pwdiLLStatsSetReqParams->macAddr,
33346 &halLLStatsSetParams.sta_id))
33347 {
33348 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33349 MAC_ADDRESS_STR
33350 ": This station does not exist in the WDI Station Table",
33351 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
33352
33353 wpalMemoryFree(pSendBuffer);
33354 return WDI_STATUS_E_FAILURE;
33355 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053033356
33357 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053033358 halLLStatsSetParams.mpdu_size_threshold =
33359 pwdiLLStatsSetReqParams->mpduSizeThreshold;
33360 halLLStatsSetParams.aggressive_statistics_gathering =
33361 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
33362
33363 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33364 " halLLStatsSetParams.req_id = %u",
33365 halLLStatsSetParams.req_id);
33366 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33367 " halLLStatsSetParams.sta_id = %u",
33368 halLLStatsSetParams.sta_id);
33369 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33370 " halLLStatsSetParams.mpdu_size_threshold = %u",
33371 halLLStatsSetParams.mpdu_size_threshold);
33372 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33373 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
33374 halLLStatsSetParams.aggressive_statistics_gathering);
33375
33376 wpalMemoryCopy(pSendBuffer+usDataOffset,
33377 &halLLStatsSetParams,
33378 sizeof(halLLStatsSetParams));
33379
33380 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33381
33382 /*-------------------------------------------------------------------------
33383 Send Clear Link Layer Stats Request to HAL
33384 -------------------------------------------------------------------------*/
33385 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33386 wdiLLStatsSetCb, pEventData->pUserData,
33387 WDI_LL_STATS_SET_RSP);
33388}
33389
33390/**
33391 @brief WDI_LLStatsGetReq
33392 This API is called to get link layer stats request in FW
33393
33394 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
33395 wdiLLStatsGetRspCb : get link layer stats resp callback
33396 usrData : Client context
33397 @see
33398 @return SUCCESS or FAIL
33399*/
33400WDI_Status
33401WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
33402 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
33403 void* pUserData)
33404{
33405 WDI_EventInfoType wdiEventData;
33406
33407 /*------------------------------------------------------------------------
33408 Sanity Check
33409 ------------------------------------------------------------------------*/
33410 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33411 {
33412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33413 "WDI API call before module is initialized - Fail request");
33414
33415 return WDI_STATUS_E_NOT_ALLOWED;
33416 }
33417
33418 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
33419 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
33420 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
33421 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
33422 wdiEventData.pUserData = pUserData;
33423
33424 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33425}
33426
33427/**
33428 @brief WDI_ProcessLLStatsGetReq -
33429 Get Link Layer Stats request to FW
33430
33431 @param pWDICtx : wdi context
33432 pEventData : indication data
33433
33434 @see
33435 @return none
33436*/
33437WDI_Status
33438WDI_ProcessLLStatsGetReq
33439(
33440 WDI_ControlBlockType* pWDICtx,
33441 WDI_EventInfoType* pEventData
33442)
33443{
33444 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
33445 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
33446 wpt_uint8* pSendBuffer = NULL;
33447 wpt_uint16 usSendSize = 0;
33448 wpt_uint16 usDataOffset = 0;
33449 tHalMacLlGetStatsReqParams halLLStatsGetParams;
33450
33451 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33452 ( NULL == pEventData->pCBfnc ))
33453 {
33454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33455 "%s: Invalid parameters", __func__);
33456 WDI_ASSERT(0);
33457 return WDI_STATUS_E_FAILURE;
33458 }
33459
33460 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
33461 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
33462
33463 /*-----------------------------------------------------------------------
33464 Get message buffer
33465 ! TO DO : proper conversion into the HAL Message Request Format
33466 -----------------------------------------------------------------------*/
33467 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33468 pWDICtx,
33469 WDI_LL_STATS_GET_REQ,
33470 sizeof(tHalMacLlGetStatsReqParams),
33471 &pSendBuffer, &usDataOffset,
33472 &usSendSize))||
33473 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
33474 {
33475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33476 "Unable to get send buffer in %s %p %p %p", __func__,
33477 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
33478 WDI_ASSERT(0);
33479 return WDI_STATUS_E_FAILURE;
33480 }
Dino Mycled3d50022014-07-07 12:58:25 +053033481 /* Need to fill in the self STA Index */
33482 if ( WDI_STATUS_SUCCESS !=
33483 WDI_STATableFindStaidByAddr(pWDICtx,
33484 pwdiLLStatsGetReqParams->macAddr,
33485 &halLLStatsGetParams.sta_id))
33486 {
33487 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33488 MAC_ADDRESS_STR
33489 ": This station does not exist in the WDI Station Table",
33490 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
33491
33492 wpalMemoryFree(pSendBuffer);
33493 return WDI_STATUS_E_FAILURE;
33494 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053033495
33496 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053033497 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
33498
33499 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33500 " halLLStatsGetParams.req_id = %u",
33501 halLLStatsGetParams.req_id);
33502 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33503 " halLLStatsGetParams.staId = %u",
33504 halLLStatsGetParams.sta_id);
33505 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33506 " halLLStatsGetParams.Mask = %u",
33507 halLLStatsGetParams.param_id_mask);
33508
33509 wpalMemoryCopy(pSendBuffer+usDataOffset,
33510 &halLLStatsGetParams,
33511 sizeof(halLLStatsGetParams));
33512
33513 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33514
33515 /*-------------------------------------------------------------------------
33516 Send Clear Link Layer Stats Request to HAL
33517 -------------------------------------------------------------------------*/
33518 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33519 wdiLLStatsGetCb, pEventData->pUserData,
33520 WDI_LL_STATS_GET_RSP);
33521}
33522
33523/**
33524 @brief WDI_LLStatsClearReq
33525 This API is called to clear link layer stats request in FW
33526
33527 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
33528 wdiLLStatsSetRspCb : clear link layer stats resp callback
33529 usrData : Client context
33530 @see
33531 @return SUCCESS or FAIL
33532*/
33533WDI_Status
33534WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
33535 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
33536 void* pUserData)
33537{
33538 WDI_EventInfoType wdiEventData;
33539
33540 /*------------------------------------------------------------------------
33541 Sanity Check
33542 ------------------------------------------------------------------------*/
33543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33544 {
33545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33546 "WDI API call before module is initialized - Fail request");
33547
33548 return WDI_STATUS_E_NOT_ALLOWED;
33549 }
33550
33551 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
33552 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
33553 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
33554 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
33555 wdiEventData.pUserData = pUserData;
33556
33557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33558 "%s:%d Enter", __func__, __LINE__);
33559
33560 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33561}
33562
33563/**
33564 @brief WDI_ProcessLLStatsClearReq -
33565 Clear Link Layer Stats request to FW
33566
33567 @param pWDICtx : wdi context
33568 pEventData : indication data
33569
33570 @see
33571 @return none
33572*/
33573WDI_Status
33574WDI_ProcessLLStatsClearReq
33575(
33576 WDI_ControlBlockType* pWDICtx,
33577 WDI_EventInfoType* pEventData
33578)
33579{
33580 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
33581 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
33582 wpt_uint8* pSendBuffer = NULL;
33583 wpt_uint16 usSendSize = 0;
33584 wpt_uint16 usDataOffset = 0;
33585 tHalMacLlClearStatsReqParams halLLStatsClearParams;
33586
33587 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33588 ( NULL == pEventData->pCBfnc ))
33589 {
33590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33591 "%s: Invalid parameters", __func__);
33592 WDI_ASSERT(0);
33593 return WDI_STATUS_E_FAILURE;
33594 }
33595
33596 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
33597 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
33598
33599 /*-----------------------------------------------------------------------
33600 Get message buffer
33601 ! TO DO : proper conversion into the HAL Message Request Format
33602 -----------------------------------------------------------------------*/
33603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33604 pWDICtx,
33605 WDI_LL_STATS_CLEAR_REQ,
33606 sizeof(tHalMacLlClearStatsReqParams),
33607 &pSendBuffer, &usDataOffset,
33608 &usSendSize))||
33609 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
33610 {
33611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33612 "Unable to get send buffer in %s %p %p %p", __func__,
33613 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
33614 WDI_ASSERT(0);
33615 return WDI_STATUS_E_FAILURE;
33616 }
Dino Mycled3d50022014-07-07 12:58:25 +053033617 /* Need to fill in the self STA Index */
33618 if ( WDI_STATUS_SUCCESS !=
33619 WDI_STATableFindStaidByAddr(pWDICtx,
33620 pwdiLLStatsClearReqParams->macAddr,
33621 &halLLStatsClearParams.sta_id))
33622 {
33623 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33624 MAC_ADDRESS_STR
33625 ": This station does not exist in the WDI Station Table",
33626 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
33627
33628 wpalMemoryFree(pSendBuffer);
33629 return WDI_STATUS_E_FAILURE;
33630 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053033631
33632 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053033633 halLLStatsClearParams.stats_clear_req_mask =
33634 pwdiLLStatsClearReqParams->statsClearReqMask;
33635 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
33636
33637 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33638 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
33639 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33640 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
33641 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33642 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
33643 halLLStatsClearParams.stats_clear_req_mask);
33644 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33645 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
33646
33647 wpalMemoryCopy(pSendBuffer+usDataOffset,
33648 &halLLStatsClearParams,
33649 sizeof(halLLStatsClearParams));
33650
33651 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33652
33653 /*-------------------------------------------------------------------------
33654 Send Clear Link Layer Stats Request to HAL
33655 -------------------------------------------------------------------------*/
33656 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33657 wdiLLStatsClearCb, pEventData->pUserData,
33658 WDI_LL_STATS_CLEAR_RSP);
33659}
33660#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053033661
Abhishek Singh85b74712014-10-08 11:38:19 +053033662WDI_Status WDI_FWStatsGetReq( void* pUserData,
33663 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
33664 wpt_uint32 stats)
33665{
33666 WDI_EventInfoType wdiEventData;
33667
33668 /*------------------------------------------------------------------------
33669 Sanity Check
33670 ------------------------------------------------------------------------*/
33671 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33672 {
33673 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33674 "WDI API call before module is initialized - Fail request");
33675 return WDI_STATUS_E_NOT_ALLOWED;
33676 }
33677 /*------------------------------------------------------------------------
33678 Fill in Event data and post to the Main FSM
33679 ------------------------------------------------------------------------*/
33680 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
33681 wdiEventData.pEventData = (void *)&stats;
33682 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
33683 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
33684 wdiEventData.pUserData = pUserData;
33685
33686 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33687
33688}
33689
Katya Nigamf0511f62015-05-05 16:40:57 +053033690WDI_Status
33691WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033692 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053033693 void* pUserData)
33694{
33695 WDI_EventInfoType wdiEventData;
33696
33697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33698 "%s", __func__);
33699
33700 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33701 {
33702 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33703 "WDI API call before module is initialized - Fail request");
33704
33705 return WDI_STATUS_E_NOT_ALLOWED;
33706 }
33707
33708 wdiEventData.wdiRequest = WDI_MON_START_REQ;
33709 wdiEventData.pEventData = pwdiMonStartReqParams;
33710 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033711 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033712 wdiEventData.pUserData = pUserData;
33713
33714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33715}
33716
33717WDI_Status
33718WDI_ProcessMonStartReq
33719(
33720 WDI_ControlBlockType* pWDICtx,
33721 WDI_EventInfoType* pEventData
33722)
33723{
33724 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033725 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033726 wpt_uint8* pSendBuffer = NULL;
33727 wpt_uint16 usSendSize = 0;
33728 wpt_uint16 usDataOffset = 0;
33729 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
33730
33731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33732 "%s", __func__);
33733
33734 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33735 ( NULL == pEventData->pCBfnc ))
33736 {
33737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33738 "%s: Invalid parameters", __func__);
33739 WDI_ASSERT(0);
33740 return WDI_STATUS_E_FAILURE;
33741 }
33742
33743 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033744 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053033745
33746 /*-----------------------------------------------------------------------
33747 Get message buffer
33748 ! TO DO : proper conversion into the HAL Message Request Format
33749 -----------------------------------------------------------------------*/
33750 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33751 pWDICtx,
33752 WDI_MON_START_REQ,
33753 sizeof(tHalEnableMonitorModeReqParams),
33754 &pSendBuffer, &usDataOffset,
33755 &usSendSize))||
33756 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
33757 {
33758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33759 "Unable to get send buffer in %s %p %p %p", __func__,
33760 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
33761 WDI_ASSERT(0);
33762 return WDI_STATUS_E_FAILURE;
33763 }
33764
33765 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
33766 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
33767 pwdiMonStartReqParams->ChannelBW);
33768 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
33769 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
33770 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
33771 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
33772 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
33773 pwdiMonStartReqParams->mmFilters[0].macAddr,
33774 sizeof( wpt_macAddr ));
33775 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
33776 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
33777 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
33778 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
33779
33780 wpalMemoryCopy(pSendBuffer+usDataOffset,
33781 &halEnableMonitorModeParams,
33782 sizeof(halEnableMonitorModeParams));
33783
33784 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33785
33786 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33787 wdiMonStartCb, pEventData->pUserData,
33788 WDI_MON_START_RSP);
33789}
33790
33791WDI_Status
33792WDI_ProcessMonStartRsp
33793(
33794 WDI_ControlBlockType* pWDICtx,
33795 WDI_EventInfoType* pEventData
33796)
33797{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033798 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033799
33800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33801 "%s: Enter ", __func__);
33802 /*-------------------------------------------------------------------------
33803 Sanity check
33804 -------------------------------------------------------------------------*/
33805 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33806 ( NULL == pEventData->pEventData))
33807 {
33808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33809 "%s: Invalid parameters", __func__);
33810 WDI_ASSERT(0);
33811 return WDI_STATUS_E_FAILURE;
33812 }
33813
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033814 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053033815
33816 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33817
33818 return WDI_STATUS_SUCCESS;
33819}
33820
33821WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033822WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053033823 void* pUserData)
33824{
33825 WDI_EventInfoType wdiEventData;
33826
33827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33828 "%s", __func__);
33829
33830 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33831 {
33832 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33833 "WDI API call before module is initialized - Fail request");
33834
33835 return WDI_STATUS_E_NOT_ALLOWED;
33836 }
33837
33838 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
33839 wdiEventData.pEventData = NULL;
33840 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033841 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033842 wdiEventData.pUserData = pUserData;
33843
33844 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33845}
33846
33847WDI_Status
33848WDI_ProcessMonStopReq
33849(
33850 WDI_ControlBlockType* pWDICtx,
33851 WDI_EventInfoType* pEventData
33852)
33853{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033854 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033855 wpt_uint8* pSendBuffer = NULL;
33856 wpt_uint16 usSendSize = 0;
33857 wpt_uint16 usDataOffset = 0;
33858 wpt_uint8 resetConfiguration;
33859
33860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33861 "%s", __func__);
33862
33863 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
33864 {
33865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33866 "%s: Invalid parameters", __func__);
33867 WDI_ASSERT(0);
33868 return WDI_STATUS_E_FAILURE;
33869 }
33870
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033871 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053033872
33873 /*-----------------------------------------------------------------------
33874 Get message buffer
33875 ! TO DO : proper conversion into the HAL Message Request Format
33876 -----------------------------------------------------------------------*/
33877 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33878 pWDICtx,
33879 WDI_MON_STOP_REQ,
33880 sizeof(wpt_uint8),
33881 &pSendBuffer, &usDataOffset,
33882 &usSendSize))||
33883 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
33884 {
33885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33886 "Unable to get send buffer in %s %p %p", __func__,
33887 pEventData, wdiMonStopCb);
33888 WDI_ASSERT(0);
33889 return WDI_STATUS_E_FAILURE;
33890 }
33891
33892 wpalMemoryCopy(pSendBuffer+usDataOffset,
33893 &resetConfiguration,
33894 sizeof(wpt_uint8));
33895
33896 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33897
33898 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33899 wdiMonStopCb, pEventData->pUserData,
33900 WDI_MON_STOP_RSP);
33901}
33902
33903WDI_Status
33904WDI_ProcessMonStopRsp
33905(
33906 WDI_ControlBlockType* pWDICtx,
33907 WDI_EventInfoType* pEventData
33908)
33909{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033910 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033911
33912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33913 "%s: Enter ", __func__);
33914 /*-------------------------------------------------------------------------
33915 Sanity check
33916 -------------------------------------------------------------------------*/
33917 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
33918 {
33919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33920 "%s: Invalid parameters", __func__);
33921 WDI_ASSERT(0);
33922 return WDI_STATUS_E_FAILURE;
33923 }
33924
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033925 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053033926
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033927 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053033928
33929 return WDI_STATUS_SUCCESS;
33930}
33931
Dino Mycle41bdc942014-06-10 11:30:24 +053033932#ifdef WLAN_FEATURE_EXTSCAN
33933
33934/**
33935 @brief Process EXTSCAN BUffer full indication from FW
33936
33937 @param pWDICtx: pointer to the WLAN DAL context
33938 pEventData: pointer to the event information structure
33939
33940 @see
33941 @return Result of the function call
33942*/
33943WDI_Status
33944WDI_ProcessEXTScanProgressInd
33945(
33946 WDI_ControlBlockType* pWDICtx,
33947 WDI_EventInfoType* pEventData
33948)
33949{
33950 WDI_LowLevelIndType wdiInd;
33951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33952
33953 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33954 "%s: ", __func__);
33955
33956 /* sanity check */
33957 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33958 ( NULL == pEventData->pEventData))
33959 {
33960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33961 "%s: Invalid parameters", __func__);
33962 WDI_ASSERT(0);
33963 return WDI_STATUS_E_FAILURE;
33964 }
33965
33966 /* Fill in the indication parameters */
33967 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
33968
33969 /* extract response and send it to UMAC */
33970 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
33971
33972 /* Notify UMAC */
33973 if (pWDICtx->wdiLowLevelIndCB)
33974 {
33975 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
33976 }
33977 else
33978 {
Dino Mycled3d50022014-07-07 12:58:25 +053033979 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053033980 "%s: WDILowLevelIndCb is null", __func__);
33981 WDI_ASSERT(0);
33982 return WDI_STATUS_E_FAILURE;
33983 }
33984 return WDI_STATUS_SUCCESS;
33985
33986} /* End of WDI_ProcessEXTScanProgressInd */
33987
33988
33989/**
33990 @brief Process EXTScan Scan Available indication from FW
33991
33992 @param pWDICtx: pointer to the WLAN DAL context
33993 pEventData: pointer to the event information structure
33994
33995 @see
33996 @return Result of the function call
33997*/
33998WDI_Status
33999WDI_ProcessEXTScanScanAvailableInd
34000(
34001 WDI_ControlBlockType* pWDICtx,
34002 WDI_EventInfoType* pEventData
34003)
34004{
34005 WDI_LowLevelIndType wdiInd;
34006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34007
34008 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34009 "%s: ", __func__);
34010
34011 /* sanity check */
34012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34013 ( NULL == pEventData->pEventData))
34014 {
34015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34016 "%s: Invalid parameters", __func__);
34017 WDI_ASSERT(0);
34018 return WDI_STATUS_E_FAILURE;
34019 }
34020
34021
34022
34023 /* Fill in the indication parameters */
34024 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
34025
34026 /* extract response and send it to UMAC */
34027 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34028
34029 /* Notify UMAC */
34030 if (pWDICtx->wdiLowLevelIndCB)
34031 {
34032 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34033 }
34034 else
34035 {
34036 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34037 "%s: WDILowLevelIndCb is null", __func__);
34038 WDI_ASSERT(0);
34039 return WDI_STATUS_E_FAILURE;
34040 }
34041 return WDI_STATUS_SUCCESS;
34042} /* End of WDI_ProcessEXTScanScanDoneInd */
34043
34044/**
34045 @brief Process EXTScan Result Indication indication from FW
34046
34047 @param pWDICtx: pointer to the WLAN DAL context
34048 pEventData: pointer to the event information structure
34049
34050 @see
34051 @return Result of the function call
34052*/
34053WDI_Status
34054WDI_ProcessEXTScanResultInd
34055(
34056 WDI_ControlBlockType* pWDICtx,
34057 WDI_EventInfoType* pEventData
34058)
34059{
34060 WDI_LowLevelIndType wdiInd;
34061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34062
34063 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34064 "%s: ", __func__);
34065
34066 /* sanity check */
34067 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34068 ( NULL == pEventData->pEventData))
34069 {
34070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34071 "%s: Invalid parameters", __func__);
34072 WDI_ASSERT(0);
34073 return WDI_STATUS_E_FAILURE;
34074 }
34075
34076 /* Fill in the indication parameters */
34077 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
34078
34079 /* extract response and send it to UMAC */
34080 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34081
34082 /* Notify UMAC */
34083 if (pWDICtx->wdiLowLevelIndCB)
34084 {
34085 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34086 }
34087 else
34088 {
34089 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34090 "%s: WDILowLevelIndCb is null", __func__);
34091 WDI_ASSERT(0);
34092 return WDI_STATUS_E_FAILURE;
34093 }
34094 return WDI_STATUS_SUCCESS;
34095} /* End of WDI_ProcessEXTScanResultInd */
34096
34097/**
34098 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
34099
34100 @param pWDICtx: pointer to the WLAN DAL context
34101 pEventData: pointer to the event information structure
34102
34103 @see
34104 @return Result of the function call
34105*/
34106WDI_Status
34107WDI_ProcessEXTScanBssidHotListResultInd
34108(
34109 WDI_ControlBlockType* pWDICtx,
34110 WDI_EventInfoType* pEventData
34111)
34112{
34113 WDI_LowLevelIndType wdiInd;
34114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34115
34116 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34117 "%s: ", __func__);
34118
34119 /* sanity check */
34120 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34121 ( NULL == pEventData->pEventData))
34122 {
34123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34124 "%s: Invalid parameters", __func__);
34125 WDI_ASSERT(0);
34126 return WDI_STATUS_E_FAILURE;
34127 }
34128
34129 /* Fill in the indication parameters */
34130 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
34131
34132 /* extract response and send it to UMAC */
34133 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34134
34135 /* Notify UMAC */
34136 if (pWDICtx->wdiLowLevelIndCB)
34137 {
34138 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34139 }
34140 else
34141 {
34142 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34143 "%s: WDILowLevelIndCb is null", __func__);
34144 WDI_ASSERT(0);
34145 return WDI_STATUS_E_FAILURE;
34146 }
34147 return WDI_STATUS_SUCCESS;
34148} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
34149
34150/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034151 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
34152
34153 @param pWDICtx: pointer to the WLAN DAL context
34154 pEventData: pointer to the event information structure
34155
34156 @see
34157 @return Result of the function call
34158*/
34159WDI_Status
34160WDI_ProcessEXTScanSsidHotListResultInd
34161(
34162 WDI_ControlBlockType* pWDICtx,
34163 WDI_EventInfoType* pEventData
34164)
34165{
34166 WDI_LowLevelIndType wdiInd;
34167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34168
34169 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34170 "%s: ", __func__);
34171
34172 /* sanity check */
34173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34174 ( NULL == pEventData->pEventData))
34175 {
34176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34177 "%s: Invalid parameters", __func__);
34178 WDI_ASSERT(0);
34179 return WDI_STATUS_E_FAILURE;
34180 }
34181
34182 /* Fill in the indication parameters */
34183 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
34184
34185 /* extract response and send it to UMAC */
34186 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34187
34188 /* Notify UMAC */
34189 if (pWDICtx->wdiLowLevelIndCB)
34190 {
34191 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34192 }
34193 else
34194 {
34195 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34196 "%s: WDILowLevelIndCb is null", __func__);
34197 WDI_ASSERT(0);
34198 return WDI_STATUS_E_FAILURE;
34199 }
34200 return WDI_STATUS_SUCCESS;
34201} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
34202
34203
34204/**
Dino Mycle41bdc942014-06-10 11:30:24 +053034205 @brief WDI_EXTScanGetCapabilitiesReq
34206
34207 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
34208 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
34209 of the Req operation received from the device
34210 pUserData: user data will be passed back with the callback
34211
34212 @return SUCCESS or FAIL
34213*/
34214WDI_Status
34215WDI_EXTScanGetCapabilitiesReq(
34216 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
34217 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
34218 void* pUserData)
34219{
34220 WDI_EventInfoType wdiEventData;
34221
34222 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34223 "%s: %d ",__func__, __LINE__);
34224 /*------------------------------------------------------------------------
34225 Sanity Check
34226 ------------------------------------------------------------------------*/
34227 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34228 {
34229 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34230 "WDI API call before module is initialized - Fail request");
34231
34232 return WDI_STATUS_E_NOT_ALLOWED;
34233 }
34234
34235 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
34236 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
34237 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
34238 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
34239 wdiEventData.pUserData = pUserData;
34240
34241 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34242}
34243
34244/**
34245 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
34246 Extended Scan Get Capability request to FW
34247
34248 @param pWDICtx : wdi context
34249 pEventData : indication data
34250
34251 @see
34252 @return none
34253*/
34254WDI_Status
34255WDI_ProcessEXTScanGetCapabilitiesReq
34256(
34257 WDI_ControlBlockType* pWDICtx,
34258 WDI_EventInfoType* pEventData
34259)
34260{
34261 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
34262 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
34263 wpt_uint8* pSendBuffer = NULL;
34264 wpt_uint16 usSendSize = 0;
34265 wpt_uint16 usDataOffset = 0;
34266 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
34267
34268 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34269 "%s: %d Enter",__func__, __LINE__);
34270
34271 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34272 ( NULL == pEventData->pCBfnc ))
34273 {
34274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34275 "%s: Invalid parameters", __func__);
34276 WDI_ASSERT(0);
34277 return WDI_STATUS_E_FAILURE;
34278 }
34279
34280 pwdiEXTScanGetCapabilitiesReqParams =
34281 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
34282 wdiEXTScanGetCapabilitiesRspCb =
34283 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
34284
34285 /*-----------------------------------------------------------------------
34286 Get message buffer
34287 ! TO DO : proper conversion into the HAL Message Request Format
34288 -----------------------------------------------------------------------*/
34289 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34290 pWDICtx,
34291 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
34292 sizeof(halEXTScanGetCapReqParams),
34293 &pSendBuffer, &usDataOffset,
34294 &usSendSize))||
34295 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
34296 {
34297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34298 "Unable to get send buffer in %s %p %p %p", __func__,
34299 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
34300 wdiEXTScanGetCapabilitiesRspCb);
34301 WDI_ASSERT(0);
34302 return WDI_STATUS_E_FAILURE;
34303 }
34304
34305 halEXTScanGetCapReqParams.requestId =
34306 pwdiEXTScanGetCapabilitiesReqParams->requestId;
34307 halEXTScanGetCapReqParams.sessionId =
34308 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
34309
34310 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34311 " requestId %u "
34312 " sessionId %u ",
34313 halEXTScanGetCapReqParams.requestId,
34314 halEXTScanGetCapReqParams.sessionId);
34315
34316 wpalMemoryCopy(pSendBuffer+usDataOffset,
34317 &halEXTScanGetCapReqParams,
34318 sizeof(halEXTScanGetCapReqParams));
34319
34320 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34321
34322
34323 /*-------------------------------------------------------------------------
34324 Send EXTScan Stop Request to HAL
34325 -------------------------------------------------------------------------*/
34326 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34327 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
34328 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
34329}
34330
34331/**
34332 @brief WDI_EXTScanGetCachedResultsReq
34333
34334 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
34335 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
34336 of the Req operation received from the device
34337 pUserData: user data will be passed back with the callback
34338
34339 @return SUCCESS or FAIL
34340*/
34341
34342WDI_Status
34343WDI_EXTScanGetCachedResultsReq(
34344 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
34345 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
34346 void* pUserData)
34347{
34348 WDI_EventInfoType wdiEventData;
34349
34350 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34351 "%s: %d Enter",__func__, __LINE__);
34352 /*------------------------------------------------------------------------
34353 Sanity Check
34354 ------------------------------------------------------------------------*/
34355 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34356 {
34357 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34358 "WDI API call before module is initialized - Fail request");
34359
34360 return WDI_STATUS_E_NOT_ALLOWED;
34361 }
34362
34363 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
34364 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
34365 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
34366 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
34367 wdiEventData.pUserData = pUserData;
34368
34369 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34370}
34371
34372/**
34373 @brief WDI_ProcessEXTScanGetCachedResultsReq -
34374 Extended Scan Get Cached Result request to FW
34375
34376 @param pWDICtx : wdi context
34377 pEventData : indication data
34378
34379 @see
34380 @return none
34381*/
34382WDI_Status
34383WDI_ProcessEXTScanGetCachedResultsReq
34384(
34385 WDI_ControlBlockType* pWDICtx,
34386 WDI_EventInfoType* pEventData
34387)
34388{
34389 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
34390 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
34391 wpt_uint8* pSendBuffer = NULL;
34392 wpt_uint16 usSendSize = 0;
34393 wpt_uint16 usDataOffset = 0;
34394 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
34395
34396 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34397 "%s: %d Enter",__func__, __LINE__);
34398
34399 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34400 ( NULL == pEventData->pCBfnc ))
34401 {
34402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34403 "%s: Invalid parameters", __func__);
34404 WDI_ASSERT(0);
34405 return WDI_STATUS_E_FAILURE;
34406 }
34407
34408 pwdiEXTScanGetCachedResultsReqParams =
34409 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
34410 wdiEXTScanGetCachedResultsCb =
34411 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
34412
34413 /*-----------------------------------------------------------------------
34414 Get message buffer
34415 ! TO DO : proper conversion into the HAL Message Request Format
34416 -----------------------------------------------------------------------*/
34417 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34418 pWDICtx,
34419 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
34420 sizeof(tHalExtScanGetScanReq),
34421 &pSendBuffer, &usDataOffset,
34422 &usSendSize))||
34423 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
34424 {
34425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34426 "Unable to get send buffer in %s %p %p %p", __func__,
34427 pEventData, pwdiEXTScanGetCachedResultsReqParams,
34428 wdiEXTScanGetCachedResultsCb);
34429 WDI_ASSERT(0);
34430 return WDI_STATUS_E_FAILURE;
34431 }
34432
34433 halEXTScanGetScanReqParams.requestId =
34434 pwdiEXTScanGetCachedResultsReqParams->requestId;
34435 halEXTScanGetScanReqParams.sessionId =
34436 pwdiEXTScanGetCachedResultsReqParams->sessionId;
34437 halEXTScanGetScanReqParams.flush =
34438 pwdiEXTScanGetCachedResultsReqParams->flush;
34439
34440 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34441 " requestId %u "
34442 " sessionId %u "
34443 " flush %u ",
34444 halEXTScanGetScanReqParams.requestId,
34445 halEXTScanGetScanReqParams.sessionId,
34446 halEXTScanGetScanReqParams.flush);
34447
34448 wpalMemoryCopy(pSendBuffer+usDataOffset,
34449 &halEXTScanGetScanReqParams,
34450 sizeof(halEXTScanGetScanReqParams));
34451
34452 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34453
34454
34455 /*-------------------------------------------------------------------------
34456 Send EXTScan Stop Request to HAL
34457 -------------------------------------------------------------------------*/
34458 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34459 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
34460 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
34461}
34462
34463/**
34464 @brief WDI_EXTScanStopReq
34465
34466 @param WDI_EXTScanStopReqParams: Req parameter for the FW
34467 WDI_EXTScanStopRspCb: callback for passing back the response
34468 of the Req operation received from the device
34469 pUserData: user data will be passed back with the callback
34470
34471 @return SUCCESS or FAIL
34472*/
34473WDI_Status
34474WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
34475 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
34476 void* pUserData)
34477{
34478 WDI_EventInfoType wdiEventData;
34479
34480 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34481 "%s: %d ",__func__, __LINE__);
34482 /*------------------------------------------------------------------------
34483 Sanity Check
34484 ------------------------------------------------------------------------*/
34485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34486 {
34487 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34488 "WDI API call before module is initialized - Fail request");
34489
34490 return WDI_STATUS_E_NOT_ALLOWED;
34491 }
34492
34493 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
34494 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
34495 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
34496 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
34497 wdiEventData.pUserData = pUserData;
34498
34499 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34500}
34501
34502/**
34503 @brief WDI_ProcessEXTScanStopReq -
34504 Extended Scan Stop request to FW
34505
34506 @param pWDICtx : wdi context
34507 pEventData : indication data
34508
34509 @see
34510 @return none
34511*/
34512WDI_Status
34513WDI_ProcessEXTScanStopReq
34514(
34515 WDI_ControlBlockType* pWDICtx,
34516 WDI_EventInfoType* pEventData
34517)
34518{
34519 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
34520 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
34521 wpt_uint8* pSendBuffer = NULL;
34522 wpt_uint16 usSendSize = 0;
34523 wpt_uint16 usDataOffset = 0;
34524 tHalExtScanStopReq halEXTScanStopReqParams;
34525
34526 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34527 "%s: %d ",__func__, __LINE__);
34528
34529 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34530 ( NULL == pEventData->pCBfnc ))
34531 {
34532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34533 "%s: Invalid parameters", __func__);
34534 WDI_ASSERT(0);
34535 return WDI_STATUS_E_FAILURE;
34536 }
34537
34538 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
34539 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
34540
34541 /*-----------------------------------------------------------------------
34542 Get message buffer
34543 ! TO DO : proper conversion into the HAL Message Request Format
34544 -----------------------------------------------------------------------*/
34545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34546 pWDICtx,
34547 WDI_EXTSCAN_STOP_REQ,
34548 sizeof(tHalExtScanStopReq),
34549 &pSendBuffer, &usDataOffset,
34550 &usSendSize))||
34551 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
34552 {
34553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34554 "Unable to get send buffer in %s %p %p %p", __func__,
34555 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
34556 WDI_ASSERT(0);
34557 return WDI_STATUS_E_FAILURE;
34558 }
34559
34560 halEXTScanStopReqParams.requestId =
34561 pwdiEXTScanStopReqParams->requestId;
34562 halEXTScanStopReqParams.sessionId =
34563 pwdiEXTScanStopReqParams->sessionId;
34564
34565 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34566 " halEXTScanStopReqParams.requestId %u "
34567 " halEXTScanStopReqParams.sessionId %u ",
34568 halEXTScanStopReqParams.requestId,
34569 halEXTScanStopReqParams.sessionId);
34570
34571 wpalMemoryCopy(pSendBuffer+usDataOffset,
34572 &halEXTScanStopReqParams,
34573 sizeof(halEXTScanStopReqParams));
34574
34575 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34576
34577
34578 /*-------------------------------------------------------------------------
34579 Send EXTScan Stop Request to HAL
34580 -------------------------------------------------------------------------*/
34581 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34582 wdiEXTScanStopCb, pEventData->pUserData,
34583 WDI_EXTSCAN_STOP_RSP);
34584}
34585
34586/**
34587 @brief WDI_EXTScanStartReq
34588
34589 @param WDI_EXTScanStartReqParams: Req parameter for the FW
34590 WDI_EXTScanStartRspCb: callback for passing back the response
34591 of the Req operation received from the device
34592 pUserData: user data will be passed back with the callback
34593
34594 @return SUCCESS or FAIL
34595*/
34596WDI_Status
34597WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
34598 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
34599 void* pUserData)
34600{
34601 WDI_EventInfoType wdiEventData;
34602
34603 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34604 "%s: %d Enter",__func__, __LINE__);
34605 /*------------------------------------------------------------------------
34606 Sanity Check
34607 ------------------------------------------------------------------------*/
34608 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34609 {
34610 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34611 "WDI API call before module is initialized - Fail request");
34612
34613 return WDI_STATUS_E_NOT_ALLOWED;
34614 }
34615
34616 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
34617 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
34618 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
34619 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
34620 wdiEventData.pUserData = pUserData;
34621
34622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34623}
34624
34625/**
34626 @brief WDI_ProcessEXTScanStartReq -
34627 Extended Scan Start Request to FW
34628
34629 @param pWDICtx : wdi context
34630 pEventData : indication data
34631
34632 @see
34633 @return none
34634*/
34635WDI_Status
34636WDI_ProcessEXTScanStartReq
34637(
34638 WDI_ControlBlockType* pWDICtx,
34639 WDI_EventInfoType* pEventData
34640)
34641{
34642 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
34643 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
34644 wpt_uint8* pSendBuffer = NULL;
34645 wpt_uint16 usSendSize = 0;
34646 wpt_uint16 usDataOffset = 0;
34647 tpHalExtScanStartReq pHalExtScanStartReqParams;
34648 int i = 0;
34649 int j = 0;
34650
34651 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34652 "%s: %d Enter",__func__, __LINE__);
34653
34654 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34655 ( NULL == pEventData->pCBfnc ))
34656 {
34657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34658 "%s: Invalid parameters", __func__);
34659 WDI_ASSERT(0);
34660 return WDI_STATUS_E_FAILURE;
34661 }
34662
34663 pwdiEXTScanStartReqParams =
34664 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
34665 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
34666
34667 /*-----------------------------------------------------------------------
34668 Get message buffer
34669 ! TO DO : proper conversion into the HAL Message Request Format
34670 -----------------------------------------------------------------------*/
34671 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34672 pWDICtx,
34673 WDI_EXTSCAN_START_REQ,
34674 sizeof(tHalExtScanStartReq),
34675 &pSendBuffer, &usDataOffset,
34676 &usSendSize))||
34677 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
34678 {
34679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34680 "Unable to get send buffer in %s %p %p %p", __func__,
34681 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
34682 WDI_ASSERT(0);
34683 return WDI_STATUS_E_FAILURE;
34684 }
34685
34686 pHalExtScanStartReqParams =
34687 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
34688
34689 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
34690 pHalExtScanStartReqParams->maxApPerScan =
34691 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034692 pHalExtScanStartReqParams->reportThresholdPercent =
34693 pwdiEXTScanStartReqParams->reportThresholdPercent;
34694 pHalExtScanStartReqParams->reportThresholdNumScans =
34695 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053034696 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
34697 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
34698 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034699 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053034700
34701 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
34702 {
34703 pHalExtScanStartReqParams->bucketData[i].bucketId =
34704 pwdiEXTScanStartReqParams->buckets[i].bucket;
34705 pHalExtScanStartReqParams->bucketData[i].channelBand =
34706 pwdiEXTScanStartReqParams->buckets[i].band;
34707 pHalExtScanStartReqParams->bucketData[i].period =
34708 pwdiEXTScanStartReqParams->buckets[i].period;
34709 pHalExtScanStartReqParams->bucketData[i].reportEvents =
34710 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034711 pHalExtScanStartReqParams->bucketData[i].max_period =
34712 pwdiEXTScanStartReqParams->buckets[i].max_period;
34713 pHalExtScanStartReqParams->bucketData[i].exponent =
34714 pwdiEXTScanStartReqParams->buckets[i].exponent;
34715 pHalExtScanStartReqParams->bucketData[i].step_count =
34716 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053034717 pHalExtScanStartReqParams->bucketData[i].numChannels =
34718 pwdiEXTScanStartReqParams->buckets[i].numChannels;
34719
34720 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
34721 {
34722 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
34723 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
34724 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
34725 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
34726 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
34727 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
34728 }
34729
34730 }
34731
34732
34733 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034734 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
34735 "reportThresholdNumScans %u requestId %u"
34736 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053034737 pHalExtScanStartReqParams->basePeriod,
34738 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034739 pHalExtScanStartReqParams->reportThresholdPercent,
34740 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053034741 pHalExtScanStartReqParams->requestId,
34742 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034743 pHalExtScanStartReqParams->numBuckets,
34744 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053034745
34746 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
34747 {
34748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
34749 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034750 " reportEvents %u numChannels %u "
34751 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053034752 pHalExtScanStartReqParams->bucketData[i].bucketId,
34753 pHalExtScanStartReqParams->bucketData[i].channelBand,
34754 pHalExtScanStartReqParams->bucketData[i].period,
34755 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034756 pHalExtScanStartReqParams->bucketData[i].numChannels,
34757 pHalExtScanStartReqParams->bucketData[i].max_period,
34758 pHalExtScanStartReqParams->bucketData[i].exponent,
34759 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053034760
34761 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
34762 {
34763 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34764 "%d) channel %u dwellTimeMs %u passive %u ",j,
34765 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
34766 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
34767 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
34768 }
34769
34770 }
34771
Dino Mycle41bdc942014-06-10 11:30:24 +053034772 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34773
34774 /*-------------------------------------------------------------------------
34775 Send EXTSCAN Start Request to HAL
34776 -------------------------------------------------------------------------*/
34777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34778 wdiEXTScanStartCb, pEventData->pUserData,
34779 WDI_EXTSCAN_START_RSP);
34780}
34781
34782/**
34783 @brief WDI_EXTScanSetBSSIDHotlistReq
34784
34785 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
34786 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
34787 of the Req operation received from the device
34788 pUserData: user data will be passed back with the callback
34789
34790 @return SUCCESS or FAIL
34791*/
34792WDI_Status
34793WDI_EXTScanSetBSSIDHotlistReq(
34794 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
34795 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
34796 void* pUserData)
34797{
34798 WDI_EventInfoType wdiEventData;
34799
34800 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34801 "%s: %d Enter ",__func__, __LINE__);
34802 /*------------------------------------------------------------------------
34803 Sanity Check
34804 ------------------------------------------------------------------------*/
34805 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34806 {
34807 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34808 "WDI API call before module is initialized - Fail request");
34809
34810 return WDI_STATUS_E_NOT_ALLOWED;
34811 }
34812
34813 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
34814 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
34815 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
34816 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
34817 wdiEventData.pUserData = pUserData;
34818
34819 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34820}
34821
34822/**
34823 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
34824 Extended Scan Set BSSSID Hotlist Request to FW
34825
34826 @param pWDICtx : wdi context
34827 pEventData : indication data
34828
34829 @see
34830 @return none
34831*/
34832WDI_Status
34833WDI_ProcessEXTScanSetBSSIDHotlistReq
34834(
34835 WDI_ControlBlockType* pWDICtx,
34836 WDI_EventInfoType* pEventData
34837)
34838{
34839 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
34840 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34841 wpt_uint8* pSendBuffer = NULL;
34842 wpt_uint16 usSendSize = 0;
34843 wpt_uint16 usDataOffset = 0;
34844 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
34845 int i;
34846
34847 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34848 "%s: %d Enter",__func__, __LINE__);
34849
34850 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34851 ( NULL == pEventData->pCBfnc ))
34852 {
34853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34854 "%s: Invalid parameters", __func__);
34855 WDI_ASSERT(0);
34856 return WDI_STATUS_E_FAILURE;
34857 }
34858
34859 pwdiEXTScanSetBSSIDHotlistReqParams =
34860 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
34861 wdiEXTScanSetBSSIDHotlistRspCb =
34862 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
34863
34864 /*-----------------------------------------------------------------------
34865 Get message buffer
34866 ! TO DO : proper conversion into the HAL Message Request Format
34867 -----------------------------------------------------------------------*/
34868 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34869 pWDICtx,
34870 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
34871 sizeof(tHalBssidHotlistSetReq),
34872 &pSendBuffer, &usDataOffset,
34873 &usSendSize))||
34874 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
34875 {
34876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34877 "Unable to get send buffer in %s %p %p %p", __func__,
34878 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
34879 wdiEXTScanSetBSSIDHotlistRspCb);
34880 WDI_ASSERT(0);
34881 return WDI_STATUS_E_FAILURE;
34882 }
34883 pHalBssidHotlistSetReqParams =
34884 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
34885
34886 pHalBssidHotlistSetReqParams->requestId =
34887 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
34888
34889 pHalBssidHotlistSetReqParams->sessionId =
34890 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
34891
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034892 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
34893 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
34894
34895 pHalBssidHotlistSetReqParams->numBssid =
34896 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053034897
34898 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
34899
34900 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
34901 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
34902 WDI_MAC_ADDR_LEN);
34903
34904 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
34905 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
34906
34907 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
34908 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
34909
Dino Mycle41bdc942014-06-10 11:30:24 +053034910 }
34911
34912 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034913 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053034914 pHalBssidHotlistSetReqParams->requestId,
34915 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034916 pHalBssidHotlistSetReqParams->numBssid,
34917 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053034918
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034919 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053034920
34921 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034922 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053034923 __func__, __LINE__, i,
34924 pHalBssidHotlistSetReqParams->ap[i].bssid,
34925 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034926 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053034927
34928 }
34929
34930 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34931
34932
34933 /*-------------------------------------------------------------------------
34934 Send EXTScan Stop Request to HAL
34935 -------------------------------------------------------------------------*/
34936 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34937 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
34938 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
34939}
34940
34941/**
34942 @brief WDI_EXTScanResetBSSIDHotlistReq
34943
34944 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
34945 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
34946 of the Req operation received from the device
34947 pUserData: user data will be passed back with the callback
34948
34949 @return SUCCESS or FAIL
34950*/
34951WDI_Status
34952WDI_EXTScanResetBSSIDHotlistReq(
34953 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
34954 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
34955 void* pUserData)
34956{
34957 WDI_EventInfoType wdiEventData;
34958
34959 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34960 "%s: %d",__func__, __LINE__);
34961 /*------------------------------------------------------------------------
34962 Sanity Check
34963 ------------------------------------------------------------------------*/
34964 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34965 {
34966 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34967 "WDI API call before module is initialized - Fail request");
34968
34969 return WDI_STATUS_E_NOT_ALLOWED;
34970 }
34971
34972 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
34973 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
34974 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
34975 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
34976 wdiEventData.pUserData = pUserData;
34977
34978 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34979}
34980
34981/**
34982 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
34983 Extended Scan reset BSSID hotlist Request to FW
34984
34985 @param pWDICtx : wdi context
34986 pEventData : indication data
34987
34988 @see
34989 @return none
34990*/
34991WDI_Status
34992WDI_ProcessEXTScanResetBSSIDHotlistReq
34993(
34994 WDI_ControlBlockType* pWDICtx,
34995 WDI_EventInfoType* pEventData
34996)
34997{
34998 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
34999 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
35000 wpt_uint8* pSendBuffer = NULL;
35001 wpt_uint16 usSendSize = 0;
35002 wpt_uint16 usDataOffset = 0;
35003 tpHalHotlistResetReq pHalHotlistResetReqParams;
35004
35005 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35006 "%s: %d",__func__, __LINE__);
35007
35008 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35009 ( NULL == pEventData->pCBfnc ))
35010 {
35011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35012 "%s: Invalid parameters", __func__);
35013 WDI_ASSERT(0);
35014 return WDI_STATUS_E_FAILURE;
35015 }
35016
35017 pwdiEXTScanResetBSSIDHotlistReqParams =
35018 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
35019 wdiEXTScanResetBSSIDHotlistRspCb =
35020 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
35021
35022 /*-----------------------------------------------------------------------
35023 Get message buffer
35024 ! TO DO : proper conversion into the HAL Message Request Format
35025 -----------------------------------------------------------------------*/
35026 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35027 pWDICtx,
35028 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
35029 sizeof(tHalHotlistResetReq),
35030 &pSendBuffer, &usDataOffset,
35031 &usSendSize))||
35032 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
35033 {
35034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35035 "Unable to get send buffer in %s %p %p %p", __func__,
35036 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
35037 wdiEXTScanResetBSSIDHotlistRspCb);
35038 WDI_ASSERT(0);
35039 return WDI_STATUS_E_FAILURE;
35040 }
35041 pHalHotlistResetReqParams =
35042 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
35043
35044 pHalHotlistResetReqParams->requestId =
35045 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
35046
35047 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35048
35049 /*-------------------------------------------------------------------------
35050 Send EXTScan Stop Request to HAL
35051 -------------------------------------------------------------------------*/
35052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35053 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
35054 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
35055}
35056
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053035057
35058/**
35059 @brief WDI_EXTScanSetSSIDHotlistReq
35060
35061 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
35062 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
35063 of the Req operation received from the device
35064 pUserData: user data will be passed back with the callback
35065
35066 @return SUCCESS or FAIL
35067*/
35068WDI_Status
35069WDI_EXTScanSetSSIDHotlistReq(
35070 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
35071 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
35072 void* pUserData)
35073{
35074 WDI_EventInfoType wdiEventData;
35075
35076 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35077 "%s: %d Enter ",__func__, __LINE__);
35078 /*------------------------------------------------------------------------
35079 Sanity Check
35080 ------------------------------------------------------------------------*/
35081 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35082 {
35083 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35084 "WDI API call before module is initialized - Fail request");
35085
35086 return WDI_STATUS_E_NOT_ALLOWED;
35087 }
35088
35089 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
35090 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
35091 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
35092 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
35093 wdiEventData.pUserData = pUserData;
35094
35095 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35096}
35097
35098/**
35099 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
35100 Extended Scan Set SSSID Hotlist Request to FW
35101
35102 @param pWDICtx : wdi context
35103 pEventData : indication data
35104
35105 @see
35106 @return none
35107*/
35108WDI_Status
35109WDI_ProcessEXTScanSetSSIDHotlistReq
35110(
35111 WDI_ControlBlockType* pWDICtx,
35112 WDI_EventInfoType* pEventData
35113)
35114{
35115 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
35116 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
35117 wpt_uint8* pSendBuffer = NULL;
35118 wpt_uint16 usSendSize = 0;
35119 wpt_uint16 usDataOffset = 0;
35120 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
35121 int i;
35122
35123 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35124 "%s: %d Enter",__func__, __LINE__);
35125
35126 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35127 ( NULL == pEventData->pCBfnc ))
35128 {
35129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35130 "%s: Invalid parameters", __func__);
35131 WDI_ASSERT(0);
35132 return WDI_STATUS_E_FAILURE;
35133 }
35134
35135 pwdiEXTScanSetSSIDHotlistReqParams =
35136 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
35137 wdiEXTScanSetSSIDHotlistRspCb =
35138 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
35139
35140 /*-----------------------------------------------------------------------
35141 Get message buffer
35142 ! TO DO : proper conversion into the HAL Message Request Format
35143 -----------------------------------------------------------------------*/
35144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35145 pWDICtx,
35146 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
35147 sizeof(tHalSsidHotlistSetReq),
35148 &pSendBuffer, &usDataOffset,
35149 &usSendSize))||
35150 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
35151 {
35152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35153 "Unable to get send buffer in %s %p %p %p", __func__,
35154 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
35155 wdiEXTScanSetSSIDHotlistRspCb);
35156 WDI_ASSERT(0);
35157 return WDI_STATUS_E_FAILURE;
35158 }
35159 pHalSsidHotlistSetReqParams =
35160 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
35161
35162 pHalSsidHotlistSetReqParams->requestId =
35163 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
35164
35165 pHalSsidHotlistSetReqParams->sessionId =
35166 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
35167
35168 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
35169 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
35170
35171 pHalSsidHotlistSetReqParams->numSsid =
35172 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
35173
35174 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
35175
35176 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
35177 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
35178 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
35179 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
35180
35181 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
35182 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
35183
35184 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
35185 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
35186
35187 pHalSsidHotlistSetReqParams->ssid[i].band =
35188 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
35189 }
35190
35191 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35192 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
35193 pHalSsidHotlistSetReqParams->requestId,
35194 pHalSsidHotlistSetReqParams->sessionId,
35195 pHalSsidHotlistSetReqParams->numSsid,
35196 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
35197
35198 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
35199
35200 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35201 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
35202 __func__, __LINE__, i,
35203 pHalSsidHotlistSetReqParams->ssid[i].ssid,
35204 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
35205 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
35206 pHalSsidHotlistSetReqParams->ssid[i].band);
35207 }
35208
35209 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35210
35211
35212 /*-------------------------------------------------------------------------
35213 Send EXTScan Stop Request to HAL
35214 -------------------------------------------------------------------------*/
35215 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35216 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
35217 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
35218}
35219
35220/**
35221 @brief WDI_EXTScanResetSSIDHotlistReq
35222
35223 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
35224 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
35225 of the Req operation received from the device
35226 pUserData: user data will be passed back with the callback
35227
35228 @return SUCCESS or FAIL
35229*/
35230WDI_Status
35231WDI_EXTScanResetSSIDHotlistReq(
35232 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
35233 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
35234 void* pUserData)
35235{
35236 WDI_EventInfoType wdiEventData;
35237
35238 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35239 "%s: %d",__func__, __LINE__);
35240 /*------------------------------------------------------------------------
35241 Sanity Check
35242 ------------------------------------------------------------------------*/
35243 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35244 {
35245 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35246 "WDI API call before module is initialized - Fail request");
35247
35248 return WDI_STATUS_E_NOT_ALLOWED;
35249 }
35250
35251 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
35252 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
35253 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
35254 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
35255 wdiEventData.pUserData = pUserData;
35256
35257 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35258}
35259
35260/**
35261 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
35262 Extended Scan reset SSID hotlist Request to FW
35263
35264 @param pWDICtx : wdi context
35265 pEventData : indication data
35266
35267 @see
35268 @return none
35269*/
35270WDI_Status
35271WDI_ProcessEXTScanResetSSIDHotlistReq
35272(
35273 WDI_ControlBlockType* pWDICtx,
35274 WDI_EventInfoType* pEventData
35275)
35276{
35277 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
35278 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
35279 wpt_uint8* pSendBuffer = NULL;
35280 wpt_uint16 usSendSize = 0;
35281 wpt_uint16 usDataOffset = 0;
35282 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
35283
35284 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35285 "%s: %d",__func__, __LINE__);
35286
35287 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35288 ( NULL == pEventData->pCBfnc ))
35289 {
35290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35291 "%s: Invalid parameters", __func__);
35292 WDI_ASSERT(0);
35293 return WDI_STATUS_E_FAILURE;
35294 }
35295
35296 pwdiEXTScanResetSSIDHotlistReqParams =
35297 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
35298 wdiEXTScanResetSSIDHotlistRspCb =
35299 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
35300
35301 /*-----------------------------------------------------------------------
35302 Get message buffer
35303 ! TO DO : proper conversion into the HAL Message Request Format
35304 -----------------------------------------------------------------------*/
35305 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35306 pWDICtx,
35307 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
35308 sizeof(tHalSsidHotlistResetReq),
35309 &pSendBuffer, &usDataOffset,
35310 &usSendSize))||
35311 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
35312 {
35313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35314 "Unable to get send buffer in %s %p %p %p", __func__,
35315 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
35316 wdiEXTScanResetSSIDHotlistRspCb);
35317 WDI_ASSERT(0);
35318 return WDI_STATUS_E_FAILURE;
35319 }
35320 pHalSsidHotlistResetReqParams =
35321 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
35322
35323 pHalSsidHotlistResetReqParams->requestId =
35324 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
35325
35326 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35327
35328 /*-------------------------------------------------------------------------
35329 Send RESET_HOTLIST_SSID Request to HAL
35330 -------------------------------------------------------------------------*/
35331 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35332 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
35333 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
35334}
35335
35336
Dino Mycle41bdc942014-06-10 11:30:24 +053035337/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053035338 @brief WDI_HighPriorityDataInfoInd
35339
35340 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
35341
35342 @return SUCCESS or FAIL
35343*/
35344WDI_Status
35345WDI_HighPriorityDataInfoInd
35346(
35347 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
35348)
35349{
35350 WDI_EventInfoType wdiEventData;
35351
35352 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35353 "%s: %d",__func__, __LINE__);
35354 /*------------------------------------------------------------------------
35355 Sanity Check
35356 ------------------------------------------------------------------------*/
35357 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35358 {
35359 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35360 "WDI API call before module is initialized - Fail request");
35361
35362 return WDI_STATUS_E_NOT_ALLOWED;
35363 }
35364
35365 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
35366 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
35367 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
35368 wdiEventData.pCBfnc = NULL;
35369 wdiEventData.pUserData = NULL;
35370
35371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35372}
35373
35374/**
35375 @brief WDI_ProcessHighPriorityDataInfoInd -
35376 Send WFD indication to FW
35377
35378 @param pWDICtx : wdi context
35379 pEventData : indication data
35380
35381 @see
35382 @return none
35383*/
35384WDI_Status
35385WDI_ProcessHighPriorityDataInfoInd
35386(
35387 WDI_ControlBlockType* pWDICtx,
35388 WDI_EventInfoType* pEventData
35389)
35390{
35391 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
35392 wpt_uint8* pSendBuffer = NULL;
35393 wpt_uint16 usSendSize = 0;
35394 wpt_uint16 usDataOffset = 0;
35395 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
35396 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35397
35398 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35399 "%s: %d",__func__, __LINE__);
35400
35401 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35402 ( NULL == pEventData->pEventData))
35403 {
35404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35405 "%s: Invalid parameters", __func__);
35406 WDI_ASSERT(0);
35407 return WDI_STATUS_E_FAILURE;
35408 }
35409
35410 pHighPriorityDataInfoIndParams =
35411 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
35412
35413 /*-----------------------------------------------------------------------
35414 Get message buffer
35415 -----------------------------------------------------------------------*/
35416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35417 pWDICtx,
35418 WDI_HIGH_PRIORITY_DATA_INFO_IND,
35419 sizeof(tHalHighPriorityDataInfoInd),
35420 &pSendBuffer, &usDataOffset,
35421 &usSendSize))||
35422 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
35423 {
35424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35425 "Unable to get send buffer in %s %p %p", __func__,
35426 pEventData, pHighPriorityDataInfoIndParams);
35427 WDI_ASSERT(0);
35428 return WDI_STATUS_E_FAILURE;
35429 }
35430 pHalHighPriorityDataInfoIndParams =
35431 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
35432
35433 pHalHighPriorityDataInfoIndParams->pause =
35434 pHighPriorityDataInfoIndParams->pause;
35435
35436 pWDICtx->pReqStatusUserData = NULL;
35437 pWDICtx->pfncRspCB = NULL;
35438
35439 /*-------------------------------------------------------------------------
35440 Send HIGH_PRIORITY_DATA_INFO Request to HAL
35441 -------------------------------------------------------------------------*/
35442 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35443 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35444}
35445
35446/**
Dino Mycle41bdc942014-06-10 11:30:24 +053035447 @brief Process Extended Scan Start Rsp function (called when a response
35448 is being received over the bus from HAL)
35449
35450 @param pWDICtx: pointer to the WLAN DAL context
35451 pEventData: pointer to the event information structure
35452
35453 @see
35454 @return Result of the function call
35455*/
35456WDI_Status
35457WDI_ProcessEXTScanStartRsp
35458(
35459 WDI_ControlBlockType* pWDICtx,
35460 WDI_EventInfoType* pEventData
35461)
35462{
35463 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
35464
35465 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35466 "%s: %d",__func__, __LINE__);
35467 /*-------------------------------------------------------------------------
35468 Sanity check
35469 -------------------------------------------------------------------------*/
35470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35471 ( NULL == pEventData->pEventData))
35472 {
35473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35474 "%s: Invalid parameters", __func__);
35475 WDI_ASSERT(0);
35476 return WDI_STATUS_E_FAILURE;
35477 }
35478
35479 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
35480 if ( NULL == wdiEXTScanStartRspCb)
35481 {
35482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35483 "%s: Callback function Invalid", __func__);
35484 WDI_ASSERT(0);
35485 return WDI_STATUS_E_FAILURE;
35486 }
35487
35488 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
35489
35490 return WDI_STATUS_SUCCESS;
35491}
35492
35493
35494/**
35495 @brief Process Extended Scan Stop Rsp function (called when a response
35496 is being received over the bus from HAL)
35497
35498 @param pWDICtx: pointer to the WLAN DAL context
35499 pEventData: pointer to the event information structure
35500
35501 @see
35502 @return Result of the function call
35503*/
35504WDI_Status
35505WDI_ProcessEXTScanStopRsp
35506(
35507 WDI_ControlBlockType* pWDICtx,
35508 WDI_EventInfoType* pEventData
35509)
35510{
35511 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
35512
35513 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35514 "%s: %d",__func__, __LINE__);
35515
35516
35517 /*-------------------------------------------------------------------------
35518 Sanity check
35519 -------------------------------------------------------------------------*/
35520 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35521 ( NULL == pEventData->pEventData))
35522 {
35523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35524 "%s: Invalid parameters", __func__);
35525 WDI_ASSERT(0);
35526 return WDI_STATUS_E_FAILURE;
35527 }
35528
35529 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
35530 if ( NULL == wdiEXTScanStopRspCb)
35531 {
35532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35533 "%s: Callback function Invalid", __func__);
35534 WDI_ASSERT(0);
35535 return WDI_STATUS_E_FAILURE;
35536 }
35537
35538 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35539
35540 return WDI_STATUS_SUCCESS;
35541}
35542
35543/**
35544 @brief Process Extended Scan Get Cached Rsp function (called when a response
35545 is being received over the bus from HAL)
35546
35547 @param pWDICtx: pointer to the WLAN DAL context
35548 pEventData: pointer to the event information structure
35549
35550 @see
35551 @return Result of the function call
35552*/
35553WDI_Status
35554WDI_ProcessEXTScanGetCachedResultsRsp
35555(
35556 WDI_ControlBlockType* pWDICtx,
35557 WDI_EventInfoType* pEventData
35558)
35559{
35560 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
35561
35562 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35563 "%s: %d Enter",__func__, __LINE__);
35564
35565
35566 /*-------------------------------------------------------------------------
35567 Sanity check
35568 -------------------------------------------------------------------------*/
35569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35570 ( NULL == pEventData->pEventData))
35571 {
35572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35573 "%s: Invalid parameters", __func__);
35574 WDI_ASSERT(0);
35575 return WDI_STATUS_E_FAILURE;
35576 }
35577
35578 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
35579 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
35580 {
35581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35582 "%s: Callback function Invalid", __func__);
35583 WDI_ASSERT(0);
35584 return WDI_STATUS_E_FAILURE;
35585 }
35586
35587 wdiEXTScanGetCachedResultsRspCb(
35588 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35589
35590 return WDI_STATUS_SUCCESS;
35591}
35592
35593/**
35594 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
35595 is being received over the bus from HAL)
35596
35597 @param pWDICtx: pointer to the WLAN DAL context
35598 pEventData: pointer to the event information structure
35599
35600 @see
35601 @return Result of the function call
35602*/
35603WDI_Status
35604WDI_ProcessEXTScanGetCapabilitiesRsp
35605(
35606 WDI_ControlBlockType* pWDICtx,
35607 WDI_EventInfoType* pEventData
35608)
35609{
35610 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
35611
35612 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35613 "%s: %d ",__func__, __LINE__);
35614
35615
35616 /*-------------------------------------------------------------------------
35617 Sanity check
35618 -------------------------------------------------------------------------*/
35619 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35620 ( NULL == pEventData->pEventData))
35621 {
35622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35623 "%s: Invalid parameters", __func__);
35624 WDI_ASSERT(0);
35625 return WDI_STATUS_E_FAILURE;
35626 }
35627
35628 wdiEXTScanGetCapabilitiesRspCb =
35629 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
35630 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
35631 {
35632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35633 "%s: Callback function Invalid", __func__);
35634 WDI_ASSERT(0);
35635 return WDI_STATUS_E_FAILURE;
35636 }
35637
35638 wdiEXTScanGetCapabilitiesRspCb(
35639 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35640
35641 return WDI_STATUS_SUCCESS;
35642}
35643
35644/**
35645 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
35646 response is being received over the bus from HAL)
35647
35648 @param pWDICtx: pointer to the WLAN DAL context
35649 pEventData: pointer to the event information structure
35650
35651 @see
35652 @return Result of the function call
35653*/
35654WDI_Status
35655WDI_ProcessEXTScanSetHotlistBSSIDRsp
35656(
35657 WDI_ControlBlockType* pWDICtx,
35658 WDI_EventInfoType* pEventData
35659)
35660{
35661 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
35662
35663 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35664 "%s: %d ",__func__, __LINE__);
35665
35666
35667 /*-------------------------------------------------------------------------
35668 Sanity check
35669 -------------------------------------------------------------------------*/
35670 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35671 ( NULL == pEventData->pEventData))
35672 {
35673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35674 "%s: Invalid parameters", __func__);
35675 WDI_ASSERT(0);
35676 return WDI_STATUS_E_FAILURE;
35677 }
35678
35679 wdiEXTScanSetBSSIDHotlistRspCb =
35680 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
35681 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
35682 {
35683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35684 "%s: Callback function Invalid", __func__);
35685 WDI_ASSERT(0);
35686 return WDI_STATUS_E_FAILURE;
35687 }
35688
35689 wdiEXTScanSetBSSIDHotlistRspCb(
35690 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35691
35692 return WDI_STATUS_SUCCESS;
35693}
35694
35695/**
35696 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
35697 when a response is being received over the bus from HAL)
35698
35699 @param pWDICtx: pointer to the WLAN DAL context
35700 pEventData: pointer to the event information structure
35701
35702 @see
35703 @return Result of the function call
35704*/
35705WDI_Status
35706WDI_ProcessEXTScanResetHotlistBSSIDRsp
35707(
35708 WDI_ControlBlockType* pWDICtx,
35709 WDI_EventInfoType* pEventData
35710)
35711{
35712 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
35713
35714 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35715 "%s: %d ",__func__, __LINE__);
35716
35717
35718 /*-------------------------------------------------------------------------
35719 Sanity check
35720 -------------------------------------------------------------------------*/
35721 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35722 ( NULL == pEventData->pEventData))
35723 {
35724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35725 "%s: Invalid parameters", __func__);
35726 WDI_ASSERT(0);
35727 return WDI_STATUS_E_FAILURE;
35728 }
35729
35730 wdiEXTScanResetBSSIDHotlistRspCb =
35731 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
35732 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
35733 {
35734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35735 "%s: Callback function Invalid", __func__);
35736 WDI_ASSERT(0);
35737 return WDI_STATUS_E_FAILURE;
35738 }
35739
35740 wdiEXTScanResetBSSIDHotlistRspCb(
35741 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35742
35743 return WDI_STATUS_SUCCESS;
35744}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053035745
35746/**
35747 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
35748 response is being received over the bus from HAL)
35749
35750 @param pWDICtx: pointer to the WLAN DAL context
35751 pEventData: pointer to the event information structure
35752
35753 @see
35754 @return Result of the function call
35755*/
35756WDI_Status
35757WDI_ProcessEXTScanSetHotlistSSIDRsp
35758(
35759 WDI_ControlBlockType* pWDICtx,
35760 WDI_EventInfoType* pEventData
35761)
35762{
35763 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
35764
35765 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35766 "%s: %d ",__func__, __LINE__);
35767
35768
35769 /*-------------------------------------------------------------------------
35770 Sanity check
35771 -------------------------------------------------------------------------*/
35772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35773 ( NULL == pEventData->pEventData))
35774 {
35775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35776 "%s: Invalid parameters", __func__);
35777 WDI_ASSERT(0);
35778 return WDI_STATUS_E_FAILURE;
35779 }
35780
35781 wdiEXTScanSetSSIDHotlistRspCb =
35782 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
35783 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
35784 {
35785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35786 "%s: Callback function Invalid", __func__);
35787 WDI_ASSERT(0);
35788 return WDI_STATUS_E_FAILURE;
35789 }
35790
35791 wdiEXTScanSetSSIDHotlistRspCb(
35792 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35793
35794 return WDI_STATUS_SUCCESS;
35795}
35796
35797
35798/**
35799 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
35800 when a response is being received over the bus from HAL)
35801
35802 @param pWDICtx: pointer to the WLAN DAL context
35803 pEventData: pointer to the event information structure
35804
35805 @see
35806 @return Result of the function call
35807*/
35808WDI_Status
35809WDI_ProcessEXTScanResetHotlistSSIDRsp
35810(
35811 WDI_ControlBlockType* pWDICtx,
35812 WDI_EventInfoType* pEventData
35813)
35814{
35815 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
35816
35817 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35818 "%s: %d ",__func__, __LINE__);
35819
35820
35821 /*-------------------------------------------------------------------------
35822 Sanity check
35823 -------------------------------------------------------------------------*/
35824 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35825 ( NULL == pEventData->pEventData))
35826 {
35827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35828 "%s: Invalid parameters", __func__);
35829 WDI_ASSERT(0);
35830 return WDI_STATUS_E_FAILURE;
35831 }
35832
35833 wdiEXTScanResetSSIDHotlistRspCb =
35834 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
35835 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
35836 {
35837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35838 "%s: Callback function Invalid", __func__);
35839 WDI_ASSERT(0);
35840 return WDI_STATUS_E_FAILURE;
35841 }
35842
35843 wdiEXTScanResetSSIDHotlistRspCb(
35844 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35845
35846 return WDI_STATUS_SUCCESS;
35847}
Dino Mycle41bdc942014-06-10 11:30:24 +053035848#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053035849
35850/**
35851 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
35852
35853 @param None
35854
35855 @see
35856
35857 @return Status of the request
35858*/
35859WDI_Status
35860WDI_SetSpoofMacAddrReq
35861(
35862 WDI_SpoofMacAddrInfoType* pWdiReq,
35863 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
35864 void* pUserData)
35865{
35866 WDI_EventInfoType wdiEventData;
35867
35868 /*-------------------------------------------------------------------------
35869 Sanity Check
35870 ------------------------------------------------------------------------*/
35871 if (eWLAN_PAL_FALSE == gWDIInitialized)
35872 {
35873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35874 "WDI API call before module is initialized - Fail request!");
35875
35876 return WDI_STATUS_E_NOT_ALLOWED;
35877 }
35878
35879 /*-------------------------------------------------------------------------
35880 Fill in Event data and post to the Main FSM
35881 ------------------------------------------------------------------------*/
35882 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
35883 wdiEventData.pEventData = pWdiReq;
35884 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
35885 wdiEventData.pCBfnc = spoofMacAddrRspCb;
35886 wdiEventData.pUserData = pUserData;
35887
35888 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35889}
35890
35891/**
35892 @brief Process SpoofMacAddr Request
35893
35894 @param pWDICtx: pointer to the WLAN DAL context
35895 pEventData: pointer to the event information structure
35896
35897 @see
35898 @return Result of the function call
35899*/
35900WDI_Status
35901WDI_ProcessSpoofMacAddrReq
35902(
35903 WDI_ControlBlockType* pWDICtx,
35904 WDI_EventInfoType* pEventData
35905)
35906{
35907 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
35908 wpt_uint8* pSendBuffer = NULL;
35909 wpt_uint16 usDataOffset = 0;
35910 wpt_uint16 usSendSize = 0;
35911 WDI_Status wdiStatus;
35912 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
35913 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
35914
35915
35916 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35917 "%s: %d Enter",__func__, __LINE__);
35918
35919 /*-------------------------------------------------------------------------
35920 Sanity check
35921 -------------------------------------------------------------------------*/
35922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35923 ( NULL == pEventData->pEventData))
35924 {
35925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35926 "%s: Invalid parameters", __func__);
35927 WDI_ASSERT(0);
35928 return WDI_STATUS_E_FAILURE;
35929 }
35930 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
35931
35932 /*-----------------------------------------------------------------------
35933 Get message buffer
35934 -----------------------------------------------------------------------*/
35935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35936 WDI_SPOOF_MAC_ADDR_REQ,
35937 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
35938 &pSendBuffer, &usDataOffset, &usSendSize))||
35939 (usSendSize < (usDataOffset +
35940 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
35941 {
35942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35943 "Unable to get send buffer in Process Spoof Mac Addr Req");
35944 WDI_ASSERT(0);
35945 return WDI_STATUS_E_FAILURE;
35946 }
35947
35948 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
35949 wdiSpoofMacAddr->macAddr,
35950 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
35951
35952 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
35953
35954 wpalMemoryCopy( pSendBuffer+usDataOffset,
35955 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
35956 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
35957
35958 /*-------------------------------------------------------------------------
35959 Send Suspend Request to HAL
35960 -------------------------------------------------------------------------*/
35961 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35962 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
35963
35964 return wdiStatus;
35965}
35966
35967/**
35968 @brief Process Spoof Mac Address Rsp function
35969 (called when a response is being received over the bus from HAL)
35970
35971 @param pWDICtx: pointer to the WLAN DAL context
35972 pEventData: pointer to the event information structure
35973
35974 @see
35975 @return Result of the function call
35976*/
35977WDI_Status
35978WDI_ProcessSpoofMacAddrRsp
35979(
35980 WDI_ControlBlockType* pWDICtx,
35981 WDI_EventInfoType* pEventData
35982)
35983{
35984 tMacSpoofedScanResp halRsp;
35985 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
35986 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
35987
35988 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35989 "%s: %d Enter",__func__, __LINE__);
35990
35991 /*-------------------------------------------------------------------------
35992 Sanity check
35993 -------------------------------------------------------------------------*/
35994 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35995 ( NULL == pEventData->pEventData))
35996 {
35997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35998 "%s: Invalid parameters", __func__);
35999 WDI_ASSERT(0);
36000 return WDI_STATUS_E_FAILURE;
36001 }
36002 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
36003
36004 /*-------------------------------------------------------------------------
36005 Extract response and send it to UMAC
36006 -------------------------------------------------------------------------*/
36007 wpalMemoryCopy( &halRsp,
36008 pEventData->pEventData, sizeof(halRsp));
36009
36010 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36011
36012 /*Notify UMAC*/
36013 wdiSpoofMacAddrRspCb(
36014 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
36015
36016 return WDI_STATUS_SUCCESS;
36017}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053036018
36019/**
Siddharth Bhal64246172015-02-27 01:04:37 +053036020 @brief Process Get Frame Log Rsp function
36021 (called when a response is being received over the bus from HAL)
36022
36023 @param pWDICtx: pointer to the WLAN DAL context
36024 pEventData: pointer to the event information structure
36025
36026 @see
36027 @return Result of the function call
36028*/
36029WDI_Status
36030WDI_ProcessGetFrameLogRsp
36031(
36032 WDI_ControlBlockType* pWDICtx,
36033 WDI_EventInfoType* pEventData
36034)
36035{
36036 tGetFrameLogResp halRsp;
36037 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
36038 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
36039
36040 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36041 "%s: %d Enter",__func__, __LINE__);
36042
36043 /*-------------------------------------------------------------------------
36044 Sanity check
36045 -------------------------------------------------------------------------*/
36046 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36047 ( NULL == pEventData->pEventData))
36048 {
36049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36050 "%s: Invalid parameters", __func__);
36051 WDI_ASSERT(0);
36052 return WDI_STATUS_E_FAILURE;
36053 }
36054
36055 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
36056
36057 /*-------------------------------------------------------------------------
36058 Extract response and send it to UMAC
36059 -------------------------------------------------------------------------*/
36060 wpalMemoryCopy( &halRsp,
36061 pEventData->pEventData, sizeof(halRsp));
36062
36063 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36064
36065 /*Notify UMAC*/
36066 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
36067
36068 return WDI_STATUS_SUCCESS;
36069}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036070
36071/**
36072 @brief Process RssiMonitorStartReq Request
36073
36074 @param pWDICtx: pointer to the WLAN DAL context
36075 pEventData: pointer to the event information structure
36076
36077 @see
36078 @return Result of the function call
36079*/
36080WDI_Status
36081WDI_ProcessRssiMonitorStartReq
36082(
36083 WDI_ControlBlockType* pWDICtx,
36084 WDI_EventInfoType* pEventData
36085)
36086{
36087 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
36088 wpt_uint8* pSendBuffer = NULL;
36089 wpt_uint16 usDataOffset = 0;
36090 wpt_uint16 usSendSize = 0;
36091 WDI_Status wdiStatus;
36092 tHalStartRssimonitoringReq halStartRssiMonitorReq;
36093 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
36094
36095
36096 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36097 "%s: %d Enter",__func__, __LINE__);
36098
36099 /*-------------------------------------------------------------------------
36100 Sanity check
36101 ------------------------------------------------------------------------*/
36102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36103 ( NULL == pEventData->pEventData))
36104 {
36105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36106 "%s: Invalid parameters", __func__);
36107 WDI_ASSERT(0);
36108 return WDI_STATUS_E_FAILURE;
36109 }
36110
36111 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
36112
36113 /*-----------------------------------------------------------------------
36114 Get message buffer
36115 -----------------------------------------------------------------------*/
36116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36117 WDI_START_RSSI_MONITOR_REQ,
36118 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
36119 &pSendBuffer, &usDataOffset, &usSendSize))||
36120 (usSendSize < (usDataOffset +
36121 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
36122 {
36123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36124 "Unable to get send buffer in GetFrameLog Req");
36125 WDI_ASSERT(0);
36126 return WDI_STATUS_E_FAILURE;
36127 }
36128
36129 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
36130 wdiRssiMonitorStartReq->requestId;
36131
36132 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
36133 wdiRssiMonitorStartReq->minRssi;
36134
36135 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
36136 wdiRssiMonitorStartReq->maxRssi;
36137 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
36138 &(wdiRssiMonitorStartReq->currentBssId),
36139 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
36140
36141 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
36142
36143 wpalMemoryCopy(pSendBuffer+usDataOffset,
36144 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
36145 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
36146
36147 /*-------------------------------------------------------------------------
36148 Send Suspend Request to HAL
36149 ------------------------------------------------------------------------*/
36150 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36151 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
36152
36153 return wdiStatus;
36154}
36155
36156
36157/**
36158 @brief Process FWLoggingInit Request
36159
36160 @param pWDICtx: pointer to the WLAN DAL context
36161 pEventData: pointer to the event information structure
36162
36163 @see
36164 @return Result of the function call
36165*/
36166WDI_Status
36167WDI_ProcessRssiMonitorStopReq
36168(
36169 WDI_ControlBlockType* pWDICtx,
36170 WDI_EventInfoType* pEventData
36171)
36172{
36173 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
36174 wpt_uint8* pSendBuffer = NULL;
36175 wpt_uint16 usDataOffset = 0;
36176 wpt_uint16 usSendSize = 0;
36177 WDI_Status wdiStatus;
36178 tHalStopRssimonitoringReq halStopRssiMonitorReq;
36179 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
36180
36181
36182 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36183 "%s: %d Enter",__func__, __LINE__);
36184
36185 /*-------------------------------------------------------------------------
36186 Sanity check
36187 ------------------------------------------------------------------------*/
36188 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36189 ( NULL == pEventData->pEventData))
36190 {
36191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36192 "%s: Invalid parameters", __func__);
36193 WDI_ASSERT(0);
36194 return WDI_STATUS_E_FAILURE;
36195 }
36196 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
36197
36198 /*-----------------------------------------------------------------------
36199 Get message buffer
36200 -----------------------------------------------------------------------*/
36201 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36202 WDI_STOP_RSSI_MONITOR_REQ,
36203 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
36204 &pSendBuffer, &usDataOffset, &usSendSize))||
36205 (usSendSize < (usDataOffset +
36206 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
36207 {
36208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36209 "Unable to get send buffer in GetFrameLog Req");
36210 WDI_ASSERT(0);
36211 return WDI_STATUS_E_FAILURE;
36212 }
36213
36214 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
36215 wdiRssiMonitorStopReq->requestId;
36216
36217 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
36218 &(wdiRssiMonitorStopReq->currentBssId),
36219 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
36220
36221 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
36222
36223 wpalMemoryCopy(pSendBuffer+usDataOffset,
36224 &halStopRssiMonitorReq.stopRssiMonitoringParams,
36225 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
36226
36227 /*-------------------------------------------------------------------------
36228 Send Suspend Request to HAL
36229 ------------------------------------------------------------------------*/
36230 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36231 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
36232
36233 return wdiStatus;
36234}
36235
36236/**
36237 @brief Process MgmtFrame Logging Init Rsp function
36238 (called when a response is being received over the bus from HAL)
36239
36240 @param pWDICtx: pointer to the WLAN DAL context
36241 pEventData: pointer to the event information structure
36242
36243 @see
36244 @return Result of the function call
36245*/
36246WDI_Status
36247WDI_ProcessRssiMonitorStopRsp
36248(
36249 WDI_ControlBlockType* pWDICtx,
36250 WDI_EventInfoType* pEventData
36251)
36252{
36253 tHalStopRssimonitoringRspParams halRsp;
36254 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
36255 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
36256
36257 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36258 "%s: %d Enter",__func__, __LINE__);
36259
36260 /*-------------------------------------------------------------------------
36261 Sanity check
36262 -------------------------------------------------------------------------*/
36263 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36264 ( NULL == pEventData->pEventData))
36265 {
36266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36267 "%s: Invalid parameters", __func__);
36268 WDI_ASSERT(0);
36269 return WDI_STATUS_E_FAILURE;
36270 }
36271 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
36272
36273 /*-------------------------------------------------------------------------
36274 Extract response and send it to UMAC
36275 -------------------------------------------------------------------------*/
36276 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36277
36278 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36279
36280 /*Notify UMAC*/
36281 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
36282
36283 return WDI_STATUS_SUCCESS;
36284}
36285
36286
36287/**
36288 @brief Process MgmtFrame Logging Init Rsp function
36289 (called when a response is being received over the bus from HAL)
36290
36291 @param pWDICtx: pointer to the WLAN DAL context
36292 pEventData: pointer to the event information structure
36293
36294 @see
36295 @return Result of the function call
36296*/
36297WDI_Status
36298WDI_ProcessRssiMonitorStartRsp
36299(
36300 WDI_ControlBlockType* pWDICtx,
36301 WDI_EventInfoType* pEventData
36302)
36303{
36304 tHalStartRssimonitoringRspParams halRsp;
36305 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
36306 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
36307
36308 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36309 "%s: %d Enter",__func__, __LINE__);
36310
36311 /*-------------------------------------------------------------------------
36312 Sanity check
36313 -------------------------------------------------------------------------*/
36314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36315 ( NULL == pEventData->pEventData))
36316 {
36317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36318 "%s: Invalid parameters", __func__);
36319 WDI_ASSERT(0);
36320 return WDI_STATUS_E_FAILURE;
36321 }
36322 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
36323
36324 /*-------------------------------------------------------------------------
36325 Extract response and send it to UMAC
36326 -------------------------------------------------------------------------*/
36327 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36328
36329 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36330
36331 /*Notify UMAC*/
36332 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
36333
36334 return WDI_STATUS_SUCCESS;
36335}
36336
Siddharth Bhal64246172015-02-27 01:04:37 +053036337/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036338 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053036339
36340 @param pWDICtx: pointer to the WLAN DAL context
36341 pEventData: pointer to the event information structure
36342
36343 @see
36344 @return Result of the function call
36345*/
36346WDI_Status
36347WDI_ProcessGetFrameLogReq
36348(
36349 WDI_ControlBlockType* pWDICtx,
36350 WDI_EventInfoType* pEventData
36351)
36352{
36353 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
36354 wpt_uint8* pSendBuffer = NULL;
36355 wpt_uint16 usDataOffset = 0;
36356 wpt_uint16 usSendSize = 0;
36357 WDI_Status wdiStatus;
36358 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036359 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053036360
36361
36362 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36363 "%s: %d Enter",__func__, __LINE__);
36364
36365 /*-------------------------------------------------------------------------
36366 Sanity check
36367 ------------------------------------------------------------------------*/
36368 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36369 ( NULL == pEventData->pEventData))
36370 {
36371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36372 "%s: Invalid parameters", __func__);
36373 WDI_ASSERT(0);
36374 return WDI_STATUS_E_FAILURE;
36375 }
36376
36377 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
36378
36379 /*-----------------------------------------------------------------------
36380 Get message buffer
36381 -----------------------------------------------------------------------*/
36382 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36383 WDI_GET_FRAME_LOG_REQ,
36384 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
36385 &pSendBuffer, &usDataOffset, &usSendSize))||
36386 (usSendSize < (usDataOffset +
36387 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
36388 {
36389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36390 "Unable to get send buffer in GetFrameLog Req");
36391 WDI_ASSERT(0);
36392 return WDI_STATUS_E_FAILURE;
36393 }
36394
36395 halGetFrameLogReq.tGetFrameLogReqParams.flags =
36396 wdiGetFrameLogReq->flags;
36397
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036398 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053036399
36400 wpalMemoryCopy( pSendBuffer+usDataOffset,
36401 &halGetFrameLogReq.tGetFrameLogReqParams,
36402 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
36403
36404 /*-------------------------------------------------------------------------
36405 Send Suspend Request to HAL
36406 ------------------------------------------------------------------------*/
36407 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36408 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
36409
36410 return wdiStatus;
36411}
36412/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036413 @brief Process MgmtFrame Logging Init Rsp function
36414 (called when a response is being received over the bus from HAL)
36415
36416 @param pWDICtx: pointer to the WLAN DAL context
36417 pEventData: pointer to the event information structure
36418
36419 @see
36420 @return Result of the function call
36421*/
36422WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036423WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036424(
36425 WDI_ControlBlockType* pWDICtx,
36426 WDI_EventInfoType* pEventData
36427)
36428{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036429 tFWLoggingInitResp halRsp;
36430 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
36431 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036432
36433 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36434 "%s: %d Enter",__func__, __LINE__);
36435
36436 /*-------------------------------------------------------------------------
36437 Sanity check
36438 -------------------------------------------------------------------------*/
36439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36440 ( NULL == pEventData->pEventData))
36441 {
36442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36443 "%s: Invalid parameters", __func__);
36444 WDI_ASSERT(0);
36445 return WDI_STATUS_E_FAILURE;
36446 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036447 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036448
36449 /*-------------------------------------------------------------------------
36450 Extract response and send it to UMAC
36451 -------------------------------------------------------------------------*/
36452 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36453
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036454 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053036455 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036456
36457 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036458 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036459
36460 return WDI_STATUS_SUCCESS;
36461}
36462
c_manjeecfd1efb2015-09-25 19:32:34 +053036463/**
36464 @brief Process Fwr Mem Dump Rsp function
36465 (called when a response is being received over the bus from HAL)
36466
36467 @param pWDICtx: pointer to the WLAN DAL context
36468 pEventData: pointer to the event information structure
36469
36470 @see
36471 @return Result of the function call
36472*/
36473WDI_Status
36474 WDI_ProcessFwrMemDumpRsp
36475
36476(
36477 WDI_ControlBlockType* pWDICtx,
36478 WDI_EventInfoType* pEventData
36479)
36480{
36481 tHalFwMemoryDumpRespMsg halRsp;
36482 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
36483 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
36484
36485 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36486 "%s: %d Enter",__func__, __LINE__);
36487
36488 /*-------------------------------------------------------------------------
36489 Sanity check
36490 -------------------------------------------------------------------------*/
36491 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36492 ( NULL == pEventData->pEventData))
36493 {
36494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36495 "%s: Invalid parameters", __func__);
36496 WDI_ASSERT(0);
36497 return WDI_STATUS_E_FAILURE;
36498 }
36499 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
36500
36501 /*-------------------------------------------------------------------------
36502 Extract response and send it to UMAC
36503 -------------------------------------------------------------------------*/
c_manjee107ae7a2015-11-13 22:28:50 +053036504 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp.tFwMemoryDumpResp));
c_manjeecfd1efb2015-09-25 19:32:34 +053036505
36506 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
36507
36508 /*Notify UMAC*/
36509 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
36510
36511 return WDI_STATUS_SUCCESS;
36512}
36513
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036514WDI_Status
36515WDI_ProcessFWLoggingDXEdoneInd
36516(
36517 WDI_ControlBlockType* pWDICtx,
36518 WDI_EventInfoType* pEventData
36519)
36520{
36521 wpt_uint8* pSendBuffer = NULL;
36522 wpt_uint16 usDataOffset = 0;
36523 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036524 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053036525 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036526 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053036527 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036528
36529
36530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36531
36532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36533 "%s", __func__);
36534
36535 /*-------------------------------------------------------------------------
36536 Sanity check
36537 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053036538 if (NULL == pEventData ||
36539 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036540 {
36541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36542 "%s: Invalid parameters", __func__);
36543 WDI_ASSERT(0);
36544 return WDI_STATUS_E_FAILURE;
36545 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053036546 pLogType = (wpt_uint32 *)pEventData->pEventData;
36547
Mihir Shete5affadc2015-05-29 20:54:57 +053036548 pLoggingSession = (WDI_DS_LoggingSessionType *)
36549 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
36550 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036551 /*-----------------------------------------------------------------------
36552 Get message buffer
36553 -----------------------------------------------------------------------*/
36554
36555 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36556 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053036557 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036558 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053036559 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036560 {
36561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36562 "Unable to get send buffer in RTS CTS ind %p ",
36563 pEventData);
36564 WDI_ASSERT(0);
36565 return WDI_STATUS_E_FAILURE;
36566 }
36567 FWLoggingDxeDoneIndParams =
36568 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
36569
36570 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053036571 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036572 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053036573
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053036574 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053036575 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053036576
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036577 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053036578 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036579 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
36580
36581 pWDICtx->pReqStatusUserData = NULL;
36582 pWDICtx->pfncRspCB = NULL;
36583 /*-------------------------------------------------------------------------
36584 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
36585 -------------------------------------------------------------------------*/
36586 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36587 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36588}
36589
Sachin Ahuja715aafc2015-07-21 23:35:10 +053036590
36591/**
36592 @brief Process Fatal Event Logs Rsp function
36593 (called when a response is being received over the bus from HAL)
36594
36595 @param pWDICtx: pointer to the WLAN DAL context
36596 pEventData: pointer to the event information structure
36597
36598 @see
36599 @return Result of the function call
36600*/
36601WDI_Status
36602WDI_ProcessFatalEventLogsRsp
36603(
36604 WDI_ControlBlockType* pWDICtx,
36605 WDI_EventInfoType* pEventData
36606)
36607{
36608 tHalFatalEventLoggingRspParams halRsp;
36609 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
36610 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
36611
36612 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36613 "%s: %d Enter",__func__, __LINE__);
36614
36615 /*-------------------------------------------------------------------------
36616 Sanity check
36617 -------------------------------------------------------------------------*/
36618 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36619 ( NULL == pEventData->pEventData))
36620 {
36621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36622 "%s: Invalid parameters", __func__);
36623 WDI_ASSERT(0);
36624 return WDI_STATUS_E_FAILURE;
36625 }
36626 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
36627
36628 /*-------------------------------------------------------------------------
36629 Extract response and send it to UMAC
36630 -------------------------------------------------------------------------*/
36631 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36632
36633 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36634
36635 /*Notify UMAC*/
36636 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
36637 pWDICtx->pRspCBUserData);
36638
36639 return WDI_STATUS_SUCCESS;
36640}
36641
36642/**
36643 @brief Process FatalEventLogs Request
36644
36645 @param pWDICtx: pointer to the WLAN DAL context
36646 pEventData: pointer to the event information structure
36647
36648 @see
36649 @return Result of the function call
36650*/
36651
36652WDI_Status
36653WDI_ProcessFatalEventLogsReq
36654
36655(
36656 WDI_ControlBlockType* pWDICtx,
36657 WDI_EventInfoType* pEventData
36658)
36659{
36660 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
36661 wpt_uint8* pSendBuffer = NULL;
36662 wpt_uint16 usDataOffset = 0;
36663 wpt_uint16 usSendSize = 0;
36664 WDI_Status wdiStatus;
36665 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
36666 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
36667
36668
36669 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36670 "%s: %d Enter",__func__, __LINE__);
36671
36672 /*-------------------------------------------------------------------------
36673 Sanity check
36674 ------------------------------------------------------------------------*/
36675 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36676 ( NULL == pEventData->pEventData))
36677 {
36678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36679 "%s: Invalid parameters", __func__);
36680 WDI_ASSERT(0);
36681 return WDI_STATUS_E_FAILURE;
36682 }
36683 wdiFatalEventLogsReq =
36684 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
36685
36686 /*-----------------------------------------------------------------------
36687 Get message buffer
36688 -----------------------------------------------------------------------*/
36689 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36690 WDI_FATAL_EVENT_LOGGING_REQ,
36691 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
36692 &pSendBuffer, &usDataOffset, &usSendSize))||
36693 (usSendSize < (usDataOffset +
36694 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
36695 {
36696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36697 "Unable to get send buffer in Fatal Event Req");
36698 WDI_ASSERT(0);
36699 return WDI_STATUS_E_FAILURE;
36700 }
36701 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
36702 wdiFatalEventLogsReq->reason_code;
36703
36704 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
36705
36706 wpalMemoryCopy( pSendBuffer+usDataOffset,
36707 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
36708 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
36709
36710 /*-------------------------------------------------------------------------
36711 Send Mgmt Logging Init Request to HAL
36712 ------------------------------------------------------------------------*/
36713 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36714 wdiFatalEventLogsRspCb, pEventData->pUserData,
36715 WDI_FATAL_EVENT_LOGGING_RSP);
36716
36717 return wdiStatus;
36718
36719
36720}
36721
36722
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036723/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036724 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036725
36726 @param pWDICtx: pointer to the WLAN DAL context
36727 pEventData: pointer to the event information structure
36728
36729 @see
36730 @return Result of the function call
36731*/
36732WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036733WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036734(
36735 WDI_ControlBlockType* pWDICtx,
36736 WDI_EventInfoType* pEventData
36737)
36738{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036739 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036740 wpt_uint8* pSendBuffer = NULL;
36741 wpt_uint16 usDataOffset = 0;
36742 wpt_uint16 usSendSize = 0;
36743 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036744 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
36745 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036746
36747
36748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36749 "%s: %d Enter",__func__, __LINE__);
36750
36751 /*-------------------------------------------------------------------------
36752 Sanity check
36753 ------------------------------------------------------------------------*/
36754 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36755 ( NULL == pEventData->pEventData))
36756 {
36757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36758 "%s: Invalid parameters", __func__);
36759 WDI_ASSERT(0);
36760 return WDI_STATUS_E_FAILURE;
36761 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036762 wdiFWLoggingInitReq =
36763 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036764
36765 /*-----------------------------------------------------------------------
36766 Get message buffer
36767 -----------------------------------------------------------------------*/
36768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036769 WDI_FW_LOGGING_INIT_REQ,
36770 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036771 &pSendBuffer, &usDataOffset, &usSendSize))||
36772 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036773 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036774 {
36775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36776 "Unable to get send buffer in Process Mgmt Logging Init Req");
36777 WDI_ASSERT(0);
36778 return WDI_STATUS_E_FAILURE;
36779 }
36780
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036781 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
36782 wdiFWLoggingInitReq->enableFlag;
36783 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
36784 wdiFWLoggingInitReq->frameSize;
36785 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
36786 wdiFWLoggingInitReq->frameType;
36787 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
36788 wdiFWLoggingInitReq->bufferMode;
36789 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
36790 wdiFWLoggingInitReq->continuousFrameLogging;
36791 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
36792 wdiFWLoggingInitReq->minLogBufferSize;
36793 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
36794 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053036795 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
36796 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
36797 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
36798 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036799
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036800 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036801
36802 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036803 &halFWLoggingInitReq.tFWLoggingInitReqParams,
36804 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036805
36806 /*-------------------------------------------------------------------------
36807 Send Mgmt Logging Init Request to HAL
36808 ------------------------------------------------------------------------*/
36809 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036810 wdiFWLoggingInitRspCb, pEventData->pUserData,
36811 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036812
36813 return wdiStatus;
36814}
36815
36816/**
c_manjeecfd1efb2015-09-25 19:32:34 +053036817 @brief Process FwrMemDumpReq Request
36818
36819 @param pWDICtx: pointer to the WLAN DAL context
36820 pEventData: pointer to the event information structure
36821
36822 @see
36823 @return Result of the function call
36824*/
36825WDI_Status
36826 WDI_ProcessFwrMemDumpReq
36827
36828(
36829 WDI_ControlBlockType* pWDICtx,
36830 WDI_EventInfoType* pEventData
36831)
36832{
36833 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
36834 wpt_uint8* pSendBuffer = NULL;
36835 wpt_uint16 usDataOffset = 0;
36836 wpt_uint16 usSendSize = 0;
36837 WDI_Status wdiStatus;
36838 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
36839 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
36840
36841 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36842 "%s: %d Enter",__func__, __LINE__);
36843
36844 /*-------------------------------------------------------------------------
36845 Sanity check
36846 ------------------------------------------------------------------------*/
36847 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36848 ( NULL == pEventData->pEventData))
36849 {
36850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36851 "%s: Invalid parameters", __func__);
36852 WDI_ASSERT(0);
36853 return WDI_STATUS_E_FAILURE;
36854 }
36855
36856 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
36857
36858 /*-----------------------------------------------------------------------
36859 Get message buffer
36860 -----------------------------------------------------------------------*/
36861 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36862 WDI_FWR_MEM_DUMP_REQ,
36863 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
36864 &pSendBuffer, &usDataOffset, &usSendSize))||
36865 (usSendSize < (usDataOffset +
36866 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
36867 {
36868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36869 "Unable to get send buffer in Process Fwr Mem Dump Req");
36870 WDI_ASSERT(0);
36871 return WDI_STATUS_E_FAILURE;
36872 }
36873
36874 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
36875 wpalMemoryCopy( pSendBuffer+usDataOffset,
36876 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
36877 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
36878
36879 /*-------------------------------------------------------------------------
36880 Send Fwr Mem Dump Request to HAL
36881 ------------------------------------------------------------------------*/
36882 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36883 wdiFwrMemDumpRspCb, pEventData->pUserData,
36884 WDI_FWR_MEM_DUMP_RSP);
36885 return wdiStatus;
36886}
36887
36888/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053036889 @brief WDI_EncryptMsgReq
36890
36891 @param pwdiEncryptMsgParams: Req parameter for the FW
36892 wdiEncryptMsgCbRsp: callback for passing back the response
36893 of the Req operation received from the device
36894 pUserData: user data will be passed back with the callback
36895
36896 @return SUCCESS or FAIL
36897*/
36898WDI_Status
36899WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
36900 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
36901 void* pUserData)
36902{
36903 WDI_EventInfoType wdiEventData;
36904
36905 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36906 "%s: %d Enter" ,__func__, __LINE__);
36907 /*------------------------------------------------------------------------
36908 Sanity Check
36909 ------------------------------------------------------------------------*/
36910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36911 {
36912 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36913 "WDI API call before module is initialized - Fail request");
36914
36915 return WDI_STATUS_E_NOT_ALLOWED;
36916 }
36917
36918 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
36919 wdiEventData.pEventData = pwdiEncryptMsgParams;
36920 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
36921 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
36922 wdiEventData.pUserData = pUserData;
36923
36924 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36925}
36926
36927/*
36928 * FUNCTION: WDI_ProcessEncryptMsgReq
36929 * Request to WDI to encrypt the given message.
36930 *
36931 * @param pWDICtx: pointer to the WLAN DAL context
36932 * pEventData: pointer to the event information structure
36933 *
36934 * @return Result of the function call
36935 */
36936
36937WDI_Status
36938WDI_ProcessEncryptMsgReq
36939(
36940 WDI_ControlBlockType* pWDICtx,
36941 WDI_EventInfoType* pEventData
36942)
36943{
36944 wpt_uint8* pSendBuffer = NULL;
36945 wpt_uint16 usDataOffset = 0;
36946 wpt_uint16 usSendSize = 0;
36947 WDI_EncryptMsgRspCb* wdiEncMsgCb;
36948 tSetEncryptedDataParams *pHalEncryptDataReq;
36949 wpt_pkt80211 *pkt = NULL;
36950
36951 /*-------------------------------------------------------------------------
36952 Sanity check
36953 -------------------------------------------------------------------------*/
36954 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
36955 ( NULL == pEventData->pCBfnc ) )
36956 {
36957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36958 "%s: Invalid parameters", __func__);
36959 WDI_ASSERT(0);
36960 return WDI_STATUS_E_FAILURE;
36961 }
36962
36963 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
36964
36965 /*-----------------------------------------------------------------------
36966 Get message buffer
36967 -----------------------------------------------------------------------*/
36968 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36969 pWDICtx, WDI_ENCRYPT_MSG_REQ,
36970 sizeof(tSetEncryptedDataReqMsg),
36971 &pSendBuffer, &usDataOffset, &usSendSize)) ||
36972 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
36973 {
36974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36975 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
36976 pEventData);
36977 WDI_ASSERT(0);
36978 return WDI_STATUS_E_FAILURE;
36979 }
36980
36981 pWDICtx->wdiReqStatusCB = NULL;
36982 pWDICtx->pReqStatusUserData = pEventData->pUserData;
36983 pkt = (wpt_pkt80211 *)pEventData->pEventData;
36984
36985 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
36986 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
36987
36988 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
36989
36990 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
36991 pkt->encParams.keyParams.key[0].keyId;
36992
36993 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
36994 &pkt->encParams.keyParams.key[0].key[0], 16);
36995
36996 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
36997
36998 pHalEncryptDataReq->data.length = pkt->data.length;
36999 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
37000
37001 /*-------------------------------------------------------------------------
37002 Send Get STA Request to HAL
37003 -------------------------------------------------------------------------*/
37004 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
37005 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
37006}
37007
37008/*
37009 * FUNCTION: WDI_ProcessEncryptMsgRsp
37010 * Receives the encrypted message from the firmware
37011 * @param pWDICtx: pointer to the WLAN DAL context
37012 * pEventData: pointer to the event information structure
37013 *
37014 * @return Result of the function call
37015 */
37016WDI_Status
37017WDI_ProcessEncryptMsgRsp
37018(
37019 WDI_ControlBlockType* pWDICtx,
37020 WDI_EventInfoType* pEventData
37021)
37022{
37023 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
37024 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
37025
37026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37027 "In %s",__func__);
37028
37029 /*-------------------------------------------------------------------------
37030 Sanity check
37031 -------------------------------------------------------------------------*/
37032 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37033 ( NULL == pEventData->pEventData))
37034 {
37035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37036 "%s: Invalid parameters", __func__);
37037 WDI_ASSERT(0);
37038 return WDI_STATUS_E_FAILURE;
37039 }
37040
37041 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
37042
37043 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
37044
37045 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
37046 pEventData->pEventData,
37047 pWDICtx->pRspCBUserData);
37048 return WDI_STATUS_SUCCESS;
37049}
Srinivas Dasari32a79262015-02-19 13:04:49 +053037050
37051WDI_Status
37052WDI_NanRequest
37053(
37054 WDI_NanRequestType *pwdiNanRequest,
37055 void *usrData
37056)
37057{
37058 WDI_EventInfoType wdiEventData;
37059
37060 /*------------------------------------------------------------------------
37061 Sanity Check
37062 ------------------------------------------------------------------------*/
37063 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37064 {
37065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37066 "WDI API call before module is initialized - Fail request");
37067
37068 return WDI_STATUS_E_NOT_ALLOWED;
37069 }
37070
37071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37072 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
37073 pwdiNanRequest->request_data_len);
37074
37075 /*------------------------------------------------------------------------
37076 Fill in Event data and post to the Main FSM
37077 ------------------------------------------------------------------------*/
37078 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
37079 wdiEventData.pEventData = pwdiNanRequest;
37080 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
37081 + pwdiNanRequest->request_data_len;
37082 wdiEventData.pUserData = usrData;
37083 wdiEventData.pCBfnc = NULL;
37084
37085
37086 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37087}
37088
37089WDI_Status
37090WDI_ProcessNanRequest
37091(
37092 WDI_ControlBlockType* pWDICtx,
37093 WDI_EventInfoType* pEventData
37094)
37095{
37096 WDI_NanRequestType *pwdiNanRequest = NULL;
37097 wpt_uint8* pSendBuffer = NULL;
37098 wpt_uint16 usDataOffset = 0;
37099 wpt_uint16 usSendSize = 0;
37100
37101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37102 "WDI_ProcessNanRequest");
37103
37104 /*-------------------------------------------------------------------------
37105 Sanity check
37106 -------------------------------------------------------------------------*/
37107 if (( NULL == pEventData ) ||
37108 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
37109 {
37110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37111 "%s: Invalid parameters", __FUNCTION__);
37112 WDI_ASSERT(0);
37113 return WDI_STATUS_E_FAILURE;
37114 }
37115
37116 /*-----------------------------------------------------------------------
37117 Get message buffer
37118 -----------------------------------------------------------------------*/
37119 if (( WDI_STATUS_SUCCESS
37120 != WDI_GetMessageBuffer( pWDICtx,
37121 WDI_NAN_REQUEST,
37122 pwdiNanRequest->request_data_len,
37123 &pSendBuffer,
37124 &usDataOffset,
37125 &usSendSize))||
37126 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
37127 {
37128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37129 "Unable to get send buffer in NAN request %p %p",
37130 pEventData, pwdiNanRequest);
37131 WDI_ASSERT(0);
37132 return WDI_STATUS_E_FAILURE;
37133 }
37134
37135 wpalMemoryCopy( pSendBuffer+usDataOffset,
37136 pwdiNanRequest->request_data,
37137 pwdiNanRequest->request_data_len);
37138
37139 pWDICtx->pReqStatusUserData = NULL;
37140 pWDICtx->pfncRspCB = NULL;
37141 vos_mem_free( pEventData->pUserData);
37142
37143 /*-------------------------------------------------------------------------
37144 Send NAN Request to HAL
37145 -------------------------------------------------------------------------*/
37146 return WDI_SendMsg( pWDICtx,
37147 pSendBuffer,
37148 usSendSize,
37149 NULL,
37150 NULL,
37151 WDI_NAN_RESPONSE);
37152}
37153
37154/**
37155 @brief Process NAN Response function (called when a
37156 response is being received over the bus from HAL)
37157
37158 @param pWDICtx: pointer to the WLAN DAL context
37159 pEventData: pointer to the event information structure
37160
37161 @see
37162 @return Result of the function call
37163*/
37164WDI_Status
37165WDI_ProcessNanResponse
37166(
37167 WDI_ControlBlockType* pWDICtx,
37168 WDI_EventInfoType* pEventData
37169)
37170{
37171 WDI_Status wdiStatus;
37172 eHalStatus halStatus;
37173
37174 /*-------------------------------------------------------------------------
37175 Sanity check
37176 -------------------------------------------------------------------------*/
37177 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37178 ( NULL == pEventData->pEventData))
37179 {
37180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37181 "%s: Invalid parameters", __func__);
37182 WDI_ASSERT(0);
37183 return WDI_STATUS_E_FAILURE;
37184 }
37185
37186 halStatus = *((eHalStatus*)pEventData->pEventData);
37187 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
37188
37189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37190 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
37191
37192 return WDI_STATUS_SUCCESS;
37193}/*WDI_ProcessNanResponse*/
37194
37195
37196/**
37197 @brief Process NAN Event function (called when
37198 an indication is being received over the
37199 bus from HAL)
37200
37201 @param pWDICtx: pointer to the WLAN DAL context
37202 pEventData: pointer to the event information structure
37203
37204 @see
37205 @return Result of the function call
37206*/
37207WDI_Status
37208WDI_ProcessNanEvent
37209(
37210 WDI_ControlBlockType* pWDICtx,
37211 WDI_EventInfoType* pEventData
37212)
37213{
37214 WDI_LowLevelIndType wdiInd;
37215
37216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37217
37218 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37219 ( NULL == pEventData->pEventData ))
37220 {
37221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37222 "%s: Invalid parameters", __func__);
37223 WDI_ASSERT( 0 );
37224 return WDI_STATUS_E_FAILURE;
37225 }
37226
37227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37228 "%s: Received NAN event", __func__);
37229 /*-------------------------------------------------------------------------
37230 Extract indication and send it to UMAC
37231 -------------------------------------------------------------------------*/
37232 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
37233 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
37234 pEventData->uEventDataSize;
37235 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
37236 pEventData->pEventData;
37237
37238 /*Notify UMAC*/
37239 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
37240
37241 return WDI_STATUS_SUCCESS;
37242}/*WDI_ProcessNanEvent*/
37243
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053037244
Gupta, Kapil7c34b322015-09-30 13:12:35 +053037245WDI_Status
37246WDI_Process_RssiBreachedInd
37247(
37248 WDI_ControlBlockType* pWDICtx,
37249 WDI_EventInfoType* pEventData
37250)
37251{
37252 WDI_LowLevelIndType wdiInd;
Abhishek Singhe3636482016-02-10 17:43:32 +053037253 tHalRssiMonitorIndParams *halRssiBreachedInd;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053037254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37255
37256 /*-------------------------------------------------------------------------
37257 Sanity check
37258 -------------------------------------------------------------------------*/
37259 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37260 ( NULL == pEventData->pEventData))
37261 {
37262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37263 "%s: Invalid parameters", __func__);
37264 WDI_ASSERT(0);
37265 return WDI_STATUS_E_FAILURE;
37266 }
37267
37268 /*-------------------------------------------------------------------------
37269 Extract indication and send it to UMAC
37270 -------------------------------------------------------------------------*/
Abhishek Singhe3636482016-02-10 17:43:32 +053037271 halRssiBreachedInd = pEventData->pEventData;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053037272
37273 /*Fill in the indication parameters*/
37274 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
Abhishek Singhe3636482016-02-10 17:43:32 +053037275 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id =
37276 halRssiBreachedInd->request_id;
37277 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId,
37278 halRssiBreachedInd->bssId,
37279 WDI_MAC_ADDR_LEN);
37280 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi =
37281 halRssiBreachedInd->rssi;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053037282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37283 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
37284 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
37285 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
37286 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
37287 /*Notify UMAC*/
37288 if (pWDICtx->wdiLowLevelIndCB)
37289 {
37290 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
37291 }
37292
37293 return WDI_STATUS_SUCCESS;
37294
37295}
37296
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053037297
37298WDI_Status
37299WDI_Process_LostLinkParamInd
37300(
37301 WDI_ControlBlockType* pWDICtx,
37302 WDI_EventInfoType* pEventData
37303)
37304{
37305 WDI_LowLevelIndType wdiInd;
37306 tHalLostLinkParametersIndParams halLostLinkParamInd;
37307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37308
37309 /*-------------------------------------------------------------------------
37310 Sanity check
37311 -------------------------------------------------------------------------*/
37312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37313 ( NULL == pEventData->pEventData))
37314 {
37315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37316 "%s: Invalid parameters", __func__);
37317 WDI_ASSERT(0);
37318 return WDI_STATUS_E_FAILURE;
37319 }
37320
37321 /*-------------------------------------------------------------------------
37322 Extract indication and send it to UMAC
37323 -------------------------------------------------------------------------*/
37324 wpalMemoryCopy( (void *)&halLostLinkParamInd,
37325 pEventData->pEventData,
37326 sizeof(tHalLostLinkParametersIndParams));
37327
37328
37329 /*Fill in the indication parameters*/
37330 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
37331 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
37332 (void *)&halLostLinkParamInd,
37333 sizeof(WDI_LostLinkParamsIndType));
37334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37335 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
37336 "linkFlTx : %d,lastDataRate : %d", __func__,
37337 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
37338 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
37339 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
37340 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
37341 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
37342 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
37343 /*Notify UMAC*/
37344 if (pWDICtx->wdiLowLevelIndCB)
37345 {
37346 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
37347 }
37348
37349 return WDI_STATUS_SUCCESS;
37350
37351}
37352
Abhishek Singh41988ba2015-05-25 19:42:29 +053037353WDI_Status
37354WDI_ProcessSetRtsCtsHtvhtInd
37355(
37356 WDI_ControlBlockType* pWDICtx,
37357 WDI_EventInfoType* pEventData
37358)
37359{
37360 wpt_uint8* pSendBuffer = NULL;
37361 wpt_uint16 usDataOffset = 0;
37362 wpt_uint16 usSendSize = 0;
37363 wpt_uint32 *rtsCtsVal;
37364 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
37365 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
37366
37367
37368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37369
37370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37371 "%s", __func__);
37372
37373 /*-------------------------------------------------------------------------
37374 Sanity check
37375 -------------------------------------------------------------------------*/
37376 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
37377 {
37378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37379 "%s: Invalid parameters", __func__);
37380 WDI_ASSERT(0);
37381 return WDI_STATUS_E_FAILURE;
37382 }
37383 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
37384 /*-----------------------------------------------------------------------
37385 Get message buffer
37386 -----------------------------------------------------------------------*/
37387
37388 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37389 WDI_SET_RTS_CTS_HTVHT_IND,
37390 sizeof(tHalRtsCtsHtvhtIndParams),
37391 &pSendBuffer, &usDataOffset, &usSendSize))||
37392 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
37393 {
37394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37395 "Unable to get send buffer in RTS CTS ind %p ",
37396 pEventData);
37397 WDI_ASSERT(0);
37398 return WDI_STATUS_E_FAILURE;
37399 }
37400 rtsCtsHtvhtIndParams =
37401 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
37402 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
37403
37404 pWDICtx->pReqStatusUserData = NULL;
37405 pWDICtx->pfncRspCB = NULL;
37406 /*-------------------------------------------------------------------------
37407 Send SET_RTS_CTS_HTVHT Indication to HAL
37408 -------------------------------------------------------------------------*/
37409 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
37410 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
37411}
37412
37413WDI_Status
37414WDI_SetRtsCtsHTVhtInd
37415(
37416 wpt_uint32 rtsCtsVal
37417)
37418{
37419 WDI_EventInfoType wdiEventData;
37420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37421
37422 /*------------------------------------------------------------------------
37423 Sanity Check
37424 ------------------------------------------------------------------------*/
37425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37426 {
37427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37428 "WDI API call before module is initialized - Fail request");
37429 return WDI_STATUS_E_NOT_ALLOWED;
37430 }
37431
37432 /*------------------------------------------------------------------------
37433 Fill in Event data and post to the Main FSM
37434 ------------------------------------------------------------------------*/
37435 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
37436 wdiEventData.pEventData = (void *) &rtsCtsVal;
37437 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
37438 wdiEventData.pCBfnc = NULL;
37439 wdiEventData.pUserData = NULL;
37440
37441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37442
37443}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053037444
37445WDI_Status
37446WDI_ProcessEnableDisableCAEventInd
37447(
37448 WDI_ControlBlockType* pWDICtx,
37449 WDI_EventInfoType* pEventData
37450)
37451{
37452 wpt_uint8* pSendBuffer = NULL;
37453 wpt_uint16 usDataOffset = 0;
37454 wpt_uint16 usSendSize = 0;
37455 wpt_uint32 *val;
37456 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
37457 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
37458
37459
37460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37461
37462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37463 "%s", __func__);
37464
37465 /*-------------------------------------------------------------------------
37466 Sanity check
37467 -------------------------------------------------------------------------*/
37468 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
37469 {
37470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37471 "%s: Invalid parameters", __func__);
37472 WDI_ASSERT(0);
37473 return WDI_STATUS_E_FAILURE;
37474 }
37475 val = (wpt_uint32*)pEventData->pEventData;
37476 /*-----------------------------------------------------------------------
37477 Get message buffer
37478 -----------------------------------------------------------------------*/
37479
37480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37481 WDI_SEND_FREQ_RANGE_CONTROL_IND,
37482 sizeof(tHalAvoidFreqRangeCtrlParam),
37483 &pSendBuffer, &usDataOffset, &usSendSize))||
37484 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
37485 {
37486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37487 "Unable to get send buffer in Channel Avoidance Ind %p ",
37488 pEventData);
37489 WDI_ASSERT(0);
37490 return WDI_STATUS_E_FAILURE;
37491 }
37492 avoidFreqRangeCtrlParam =
37493 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
37494 avoidFreqRangeCtrlParam->status = *val;
37495
37496 pWDICtx->pReqStatusUserData = NULL;
37497 pWDICtx->pfncRspCB = NULL;
37498 /*-------------------------------------------------------------------------
37499 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
37500 -------------------------------------------------------------------------*/
37501 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
37502 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
37503}
37504
37505WDI_Status
37506WDI_EnableDisableCAEventInd
37507(
37508 wpt_uint32 val
37509)
37510{
37511 WDI_EventInfoType wdiEventData;
37512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37513
37514 /*------------------------------------------------------------------------
37515 Sanity Check
37516 ------------------------------------------------------------------------*/
37517 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37518 {
37519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37520 "WDI API call before module is initialized - Fail request");
37521 return WDI_STATUS_E_NOT_ALLOWED;
37522 }
37523
37524 /*------------------------------------------------------------------------
37525 Fill in Event data and post to the Main FSM
37526 ------------------------------------------------------------------------*/
37527 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
37528 wdiEventData.pEventData = (void *) &val;
37529 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
37530 wdiEventData.pCBfnc = NULL;
37531 wdiEventData.pUserData = NULL;
37532
37533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37534
37535} /* WDI_EnableDisableCAEventInd */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053037536
37537/**
37538 @brief WDI_WifiConfigSetReq
37539 This API is called to set WifiConfig params request in FW
37540
37541 @param pwdiWifiConfigSetReqParams : pointer to set WifiCofig request params
37542 wdiWifiConfigSetRspCb : WifiConfig stats resp callback
37543 usrData : Client context
37544 @see
37545 @return SUCCESS or FAIL
37546*/
37547WDI_Status
37548WDI_WifiConfigSetReq(WDI_WifiConfigSetReqType* pwdiWifConfigSetReqParams,
37549 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb,
37550 void* pUserData)
37551{
37552 WDI_EventInfoType wdiEventData;
37553
37554 /*------------------------------------------------------------------------
37555 Sanity Check
37556 ------------------------------------------------------------------------*/
37557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37558 {
37559 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
37560 "WDI API call before module is initialized - Fail request");
37561
37562 return WDI_STATUS_E_NOT_ALLOWED;
37563 }
37564
37565 wdiEventData.wdiRequest = WDI_WIFI_CONFIG_SET_REQ;
37566 wdiEventData.pEventData = pwdiWifConfigSetReqParams;
37567 wdiEventData.uEventDataSize = sizeof(*pwdiWifConfigSetReqParams);
37568 wdiEventData.pCBfnc = wdiWifiConfigSetRspCb;
37569 wdiEventData.pUserData = pUserData;
37570
37571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37572}
37573
37574/**
37575 @brief WDI_ProcessWifiConfigReq -
37576 Set WifiConfig request to FW
37577
37578 @param pWDICtx : wdi context
37579 pEventData : indication data
37580
37581 @see
37582 @return none
37583*/
37584 WDI_Status
37585 WDI_ProcessWifiConfigReq
37586 (
37587 WDI_ControlBlockType* pWDICtx,
37588 WDI_EventInfoType* pEventData
37589 )
37590 {
37591 WDI_WifiConfigSetReqType* pwdiWifiConfigSetReqParams;
37592 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
37593 wpt_uint8* pSendBuffer = NULL;
37594 wpt_uint16 usSendSize = 0;
37595 wpt_uint16 usDataOffset = 0;
37596 tSetWifiConfigParamsReq halWifiConfigSetParams;
37597
37598 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
37599 ( NULL == pEventData->pCBfnc ))
37600 {
37601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37602 "%s: Invalid parameters", __func__);
37603 WDI_ASSERT(0);
37604 return WDI_STATUS_E_FAILURE;
37605 }
37606 pwdiWifiConfigSetReqParams = (WDI_WifiConfigSetReqType*)pEventData->pEventData;
37607 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pEventData->pCBfnc;
37608
37609 /*-----------------------------------------------------------------------
37610 Get message buffer
37611 ! TO DO : proper conversion into the HAL Message Request Format
37612 -----------------------------------------------------------------------*/
37613 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
37614 pWDICtx,
37615 WDI_WIFI_CONFIG_SET_REQ,
37616 sizeof(halWifiConfigSetParams.wifiConfigParams),
37617 &pSendBuffer, &usDataOffset,
37618 &usSendSize))||
37619 ( usSendSize < (usDataOffset + sizeof(halWifiConfigSetParams.wifiConfigParams) )))
37620 {
37621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37622 "Unable to get send buffer in %s %p %p %p", __func__,
37623 pEventData, pwdiWifiConfigSetReqParams, wdiWifiConfigSetRspCb);
37624 WDI_ASSERT(0);
37625 return WDI_STATUS_E_FAILURE;
37626 }
37627
37628 halWifiConfigSetParams.wifiConfigParams.paramType = pwdiWifiConfigSetReqParams->paramType;
37629 halWifiConfigSetParams.wifiConfigParams.paramValue =
37630 pwdiWifiConfigSetReqParams->paramValue;
37631 vos_mem_copy(halWifiConfigSetParams.wifiConfigParams.bssid, &(pwdiWifiConfigSetReqParams->bssId),
37632 sizeof(tSirMacAddr));
37633
37634 wpalMemoryCopy(pSendBuffer+usDataOffset,
37635 &halWifiConfigSetParams.wifiConfigParams,
37636 sizeof(halWifiConfigSetParams.wifiConfigParams));
37637
37638 pWDICtx->pReqStatusUserData = pEventData->pUserData;
37639
37640 /*-------------------------------------------------------------------------
37641 Send Clear Link Layer Stats Request to HAL
37642 -------------------------------------------------------------------------*/
37643 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
37644 wdiWifiConfigSetRspCb, pEventData->pUserData,
37645 WDI_WIFI_CONFIG_SET_RSP);
37646 }
37647
37648WDI_Status
37649WDI_ProcessWificonfigSetRsp
37650( WDI_ControlBlockType* pWDICtx,
37651 WDI_EventInfoType* pEventData )
37652
37653{
37654 tHalSetWifiConfigRspParams halRsp;
37655 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
37656 WDI_WifconfigSetRsp wdiWifconfigSetRsp;
37657
37658 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37659 "%s: %d Enter",__func__, __LINE__);
37660
37661 /*-------------------------------------------------------------------------
37662 Sanity check
37663 -------------------------------------------------------------------------*/
37664 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37665 ( NULL == pEventData->pEventData))
37666 {
37667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37668 "%s: Invalid parameters", __func__);
37669 WDI_ASSERT(0);
37670 return WDI_STATUS_E_FAILURE;
37671 }
37672 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pWDICtx->pfncRspCB;
37673
37674 /*-------------------------------------------------------------------------
37675 Extract response and send it to UMAC
37676 -------------------------------------------------------------------------*/
37677 wpalMemoryCopy(&halRsp, pEventData->pEventData, sizeof(halRsp));
37678
37679 wdiWifconfigSetRsp.wificonfigset_status = WDI_HAL_2_WDI_STATUS(halRsp.status);
37680
37681 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37682 "WifiConfig RSP status = %d",
37683 wdiWifconfigSetRsp.wificonfigset_status);
37684 /*Notify UMAC*/
37685 wdiWifiConfigSetRspCb( &wdiWifconfigSetRsp, pWDICtx->pRspCBUserData);
37686
37687 return WDI_STATUS_SUCCESS;
37688}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037689
37690#ifdef FEATURE_OEM_DATA_SUPPORT
37691
37692/**
37693 @brief WDI_StartOemDataReqIndNew
37694
37695 @param pOemDataReqNewConfig: Req parameter for the FW
37696
37697 @return SUCCESS or FAIL
37698*/
37699WDI_Status
37700WDI_StartOemDataReqIndNew
37701(
37702 WDI_OemDataReqNewConfig *pOemDataReqNewConfig
37703)
37704{
37705 WDI_EventInfoType wdiEventData;
37706
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037707 /*------------------------------------------------------------------------
37708 Sanity Check
37709 ------------------------------------------------------------------------*/
37710 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37711 {
37712 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
37713 "WDI API call before module is initialized - Fail request");
37714
37715 return WDI_STATUS_E_NOT_ALLOWED;
37716 }
37717
37718 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ_IND_NEW;
37719 wdiEventData.pEventData = pOemDataReqNewConfig;
37720 wdiEventData.uEventDataSize = sizeof(*pOemDataReqNewConfig);
37721 wdiEventData.pCBfnc = NULL;
37722 wdiEventData.pUserData = NULL;
37723
37724 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37725}
37726
37727/**
37728 @brief WDI_ProcessStartOemDataReqIndNew -
37729 Send OEM Data request new indication to FW
37730
37731 @param pWDICtx : wdi context
37732 pEventData : indication data
37733
37734 @see
37735 @return none
37736*/
37737WDI_Status
37738WDI_ProcessStartOemDataReqIndNew
37739(
37740 WDI_ControlBlockType* pWDICtx,
37741 WDI_EventInfoType* pEventData
37742)
37743{
37744 WDI_OemDataReqNewConfig* wdiOemDataReqNewConfig;
37745 wpt_uint8* pSendBuffer = NULL;
37746 wpt_uint16 usSendSize = 0;
37747 wpt_uint16 usDataOffset = 0;
37748 tpStartOemDataReqParamsNew pHalStartOemDataReqParamsNew;
37749 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
37750
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037751 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37752 ( NULL == pEventData->pEventData))
37753 {
37754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37755 "%s: Invalid parameters", __func__);
37756 WDI_ASSERT(0);
37757 return WDI_STATUS_E_FAILURE;
37758 }
37759
37760 wdiOemDataReqNewConfig =
37761 (WDI_OemDataReqNewConfig *)pEventData->pEventData;
37762
37763 /*-----------------------------------------------------------------------
37764 Get message buffer
37765 -----------------------------------------------------------------------*/
37766 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
37767 pWDICtx,
37768 WDI_START_OEM_DATA_REQ_IND_NEW,
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037769 sizeof(*pHalStartOemDataReqParamsNew),
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037770 &pSendBuffer, &usDataOffset,
37771 &usSendSize))||
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037772 ( usSendSize < (usDataOffset + sizeof(*pHalStartOemDataReqParamsNew) )))
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037773 {
37774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37775 "Unable to get send buffer in %s %p %p", __func__,
37776 pEventData, wdiOemDataReqNewConfig);
37777 WDI_ASSERT(0);
37778 return WDI_STATUS_E_FAILURE;
37779 }
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037780
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037781 pHalStartOemDataReqParamsNew =
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037782 (tpStartOemDataReqParamsNew) (pSendBuffer + usDataOffset);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037783
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037784 wpalMemoryCopy(pHalStartOemDataReqParamsNew,
37785 wdiOemDataReqNewConfig,
37786 sizeof(*pHalStartOemDataReqParamsNew));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037787
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037788 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37789 "%s: selfMacAddr: " MAC_ADDRESS_STR" ", __func__,
37790 MAC_ADDR_ARRAY(pHalStartOemDataReqParamsNew->selfMacAddr));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037791
37792 pWDICtx->pReqStatusUserData = NULL;
37793 pWDICtx->pfncRspCB = NULL;
37794
37795 /*-------------------------------------------------------------------------
37796 Send WDI_START_OEM_DATA_REQ_IND_NEW Request to HAL
37797 -------------------------------------------------------------------------*/
37798 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
37799 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
37800}
37801
37802/**
37803 @brief Process OemDataRsp New Indication indication from FW
37804
37805 @param pWDICtx: pointer to the WLAN DAL context
37806 pEventData: pointer to the event information structure
37807
37808 @see
37809 @return Result of the function call
37810*/
37811WDI_Status
37812WDI_ProcessStartOemDataRspIndNew
37813(
37814 WDI_ControlBlockType* pWDICtx,
37815 WDI_EventInfoType* pEventData
37816)
37817{
37818 WDI_LowLevelIndType wdiInd;
37819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37820
37821 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37822 "%s: ", __func__);
37823
37824 /* sanity check */
37825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37826 ( NULL == pEventData->pEventData))
37827 {
37828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37829 "%s: Invalid parameters", __func__);
37830 WDI_ASSERT(0);
37831 return WDI_STATUS_E_FAILURE;
37832 }
37833
37834 /* Fill in the indication parameters */
37835 wdiInd.wdiIndicationType = WDI_START_OEM_DATA_RSP_IND_NEW;
37836
Padma, Santhosh Kumarf75c37b2016-01-25 10:36:08 +053037837 wdiInd.wdiIndicationData.wdiOemDataRspNew.pOemRspNewIndData =
37838 (void *)pEventData->pEventData;
37839 wdiInd.wdiIndicationData.wdiOemDataRspNew.OemRspNewLen =
37840 pEventData->uEventDataSize;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037841 /* Notify UMAC */
37842 if (pWDICtx->wdiLowLevelIndCB)
37843 {
37844 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
37845 }
37846 else
37847 {
37848 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37849 "%s: WDILowLevelIndCb is null", __func__);
37850 WDI_ASSERT(0);
37851 return WDI_STATUS_E_FAILURE;
37852 }
37853 return WDI_STATUS_SUCCESS;
37854} /* End of WDI_ProcessEXTScanResultInd */
37855
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053037856/**
37857 @brief Process Current Antenna Index information from FW
37858
37859 @param pWDICtx: pointer to the WLAN DAL context
37860 pEventData: pointer to the event information structure
37861
37862 @see
37863 @return Result of the function call
37864*/
37865WDI_Status
37866WDI_ProcessGetCurrentAntennaIndexRsp
37867(
37868 WDI_ControlBlockType* pWDICtx,
37869 WDI_EventInfoType* pEventData
37870)
37871{
37872 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
37873 tHalAntennaDiversitySelectionRspParams *pHalAntDivSelRsp;
37874
37875 /*-------------------------------------------------------------------------
37876 Sanity check
37877 -------------------------------------------------------------------------*/
37878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37879 ( NULL == pEventData->pEventData))
37880 {
37881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37882 "%s: Invalid parameters", __func__);
37883 WDI_ASSERT(0);
37884 return WDI_STATUS_E_FAILURE;
37885 }
37886 pHalAntDivSelRsp =
37887 (tHalAntennaDiversitySelectionRspParams*)pEventData->pEventData;
37888 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pWDICtx->pfncRspCB;
37889
37890 if (pHalAntDivSelRsp->status != 0)
37891 {
37892 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_E_FAILURE,
37893 (void *)pHalAntDivSelRsp, pWDICtx->pRspCBUserData);
37894 }
37895 else
37896 {
37897 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_SUCCESS,
37898 (void *)pHalAntDivSelRsp,
37899 pWDICtx->pRspCBUserData);
37900 }
37901
37902 return WDI_STATUS_SUCCESS;
37903}
37904
37905/**
37906 @brief Process Get Current Antenna Index request command
37907
37908 @param pWDICtx: pointer to the WLAN DAL context
37909 pEventData: pointer to the event information structure
37910
37911 @see
37912 @return Result of the function call
37913*/
37914WDI_Status
37915WDI_ProcessGetCurrentAntennaIndex
37916(
37917 WDI_ControlBlockType* pWDICtx,
37918 WDI_EventInfoType* pEventData
37919)
37920{
37921 wpt_uint8* pSendBuffer = NULL;
37922 wpt_uint16 usDataOffset = 0;
37923 wpt_uint16 usSendSize = 0;
37924 tHalAntennaDiversitySelectionReqParams halAntDivSelReq;
37925 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
37926
37927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37928 "%s", __func__);
37929
37930 /*-------------------------------------------------------------------------
37931 Sanity check
37932 -------------------------------------------------------------------------*/
37933 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
37934 ( NULL == pEventData->pCBfnc ))
37935 {
37936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37937 "%s: Invalid parameters", __func__);
37938 WDI_ASSERT(0);
37939 return WDI_STATUS_E_FAILURE;
37940 }
37941 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pEventData->pCBfnc;
37942
37943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37944 WDI_ANTENNA_DIVERSITY_SELECTION_REQ,
37945 sizeof(tHalAntennaDiversitySelectionReqParams),
37946 &pSendBuffer, &usDataOffset, &usSendSize))||
37947 ( usSendSize < (usDataOffset +
37948 sizeof(tHalAntennaDiversitySelectionReqParams) )))
37949 {
37950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37951 "Unable to get send buffer in GetCurrentAntennaIndex %p",
37952 pEventData);
37953 WDI_ASSERT(0);
37954 return WDI_STATUS_E_FAILURE;
37955 }
37956 pWDICtx->wdiReqStatusCB = NULL;
37957 pWDICtx->pReqStatusUserData = pEventData->pEventData;
37958 halAntDivSelReq.reserved = *((wpt_uint32 *)(pEventData->pEventData));
37959 wpalMemoryCopy( pSendBuffer+usDataOffset,
37960 &halAntDivSelReq,
37961 sizeof(tHalAntennaDiversitySelectionReqParams));
37962
37963 /*-------------------------------------------------------------------------
37964 Send Get STA Request to HAL
37965 -------------------------------------------------------------------------*/
37966 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
37967 wdiGetCurrentAntennaIndexRspCb,
37968 pEventData->pUserData,
37969 WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
37970}
37971
37972/**
37973 @brief WDI_GetCurrentAntennaIndex
37974
37975 @param pOemDataReqNewConfig: Req parameter for the FW
37976
37977 @return SUCCESS or FAIL
37978*/
37979WDI_Status
37980WDI_GetCurrentAntennaIndex
37981(
37982 void *pUserData,
37983 WDI_AntennaDivSelRspCb wdiAntennaDivSelRspCb,
37984 wpt_uint32 reserved
37985)
37986{
37987 WDI_EventInfoType wdiEventData;
37988
37989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37990
37991 /*------------------------------------------------------------------------
37992 Sanity Check
37993 ------------------------------------------------------------------------*/
37994 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37995 {
37996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37997 "WDI API call before module is initialized - Fail request");
37998 return WDI_STATUS_E_NOT_ALLOWED;
37999 }
38000 /*------------------------------------------------------------------------
38001 Fill in Event data and post to the Main FSM
38002 ------------------------------------------------------------------------*/
38003 wdiEventData.wdiRequest = WDI_ANTENNA_DIVERSITY_SELECTION_REQ;
38004 wdiEventData.pEventData = (void *)&reserved;
38005 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
38006 wdiEventData.pCBfnc = wdiAntennaDivSelRspCb;
38007 wdiEventData.pUserData = pUserData;
38008
38009 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38010}
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053038011
38012/**
38013 @brief Process Set beacon miss penalty count command
38014
38015 @param pWDICtx: pointer to the WLAN DAL context
38016 pEventData: pointer to the event information structure
38017
38018 @see
38019 @return Result of the function call
38020*/
38021WDI_Status
38022WDI_ProcessBcnMissPenaltyCount
38023(
38024 WDI_ControlBlockType* pWDICtx,
38025 WDI_EventInfoType* pEventData
38026)
38027{
38028 wpt_uint8* pSendBuffer = NULL;
38029 wpt_uint16 usDataOffset = 0;
38030 wpt_uint16 usSendSize = 0;
38031 tHalModifyRoamParamsIndParams halModifyRoamParams;
38032 WDI_ModifyRoamParamsReqType *modifyRoamParams;
38033 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38034
38035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38036
38037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38038 "%s", __func__);
38039 /*-------------------------------------------------------------------------
38040 Sanity check
38041 -------------------------------------------------------------------------*/
38042 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
38043 {
38044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38045 "%s: Invalid parameters", __func__);
38046 WDI_ASSERT(0);
38047 return WDI_STATUS_E_FAILURE;
38048 }
38049
38050 /*-----------------------------------------------------------------------
38051 Get message buffer
38052 -----------------------------------------------------------------------*/
38053
38054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38055 WDI_MODIFY_ROAM_PARAMS_IND,
38056 sizeof(tHalModifyRoamParamsIndParams),
38057 &pSendBuffer, &usDataOffset, &usSendSize))||
38058 ( usSendSize < (usDataOffset + sizeof(tHalModifyRoamParamsIndParams) )))
38059 {
38060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38061 "Unable to get send buffer for Modify roam req params %p ",
38062 pEventData);
38063 WDI_ASSERT(0);
38064 return WDI_STATUS_E_FAILURE;
38065 }
38066
38067 modifyRoamParams = (WDI_ModifyRoamParamsReqType *)pEventData->pEventData;
38068 halModifyRoamParams.param = modifyRoamParams->param;
38069 halModifyRoamParams.value = modifyRoamParams->value;
38070 wpalMemoryCopy( pSendBuffer+usDataOffset, &halModifyRoamParams,
38071 sizeof(halModifyRoamParams));
38072 pWDICtx->pReqStatusUserData = NULL;
38073 pWDICtx->pfncRspCB = NULL;
38074
38075 /*-------------------------------------------------------------------------
38076 Send WDI_MODIFY_ROAM_PARAMS_IND to HAL
38077 -------------------------------------------------------------------------*/
38078 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
38079 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38080
38081}
38082
38083/**
38084 @brief WDI_SetBcnMissPenaltyCount
38085
38086 @param params: Req parameter for the FW
38087
38088 @return SUCCESS or FAIL
38089*/
38090
38091WDI_Status
38092WDI_SetBcnMissPenaltyCount
38093(
38094 WDI_ModifyRoamParamsReqType *params
38095)
38096{
38097 WDI_EventInfoType wdiEventData;
38098
38099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38100
38101 /*------------------------------------------------------------------------
38102 Sanity Check
38103 ------------------------------------------------------------------------*/
38104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38105 {
38106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38107 "WDI API call before module is initialized - Fail request");
38108 return WDI_STATUS_E_NOT_ALLOWED;
38109 }
38110
38111 /*------------------------------------------------------------------------
38112 Fill in Event data and post to the Main FSM
38113 ------------------------------------------------------------------------*/
38114 wdiEventData.wdiRequest = WDI_MODIFY_ROAM_PARAMS_IND;
38115 wdiEventData.pEventData = (void *)params;
38116 wdiEventData.uEventDataSize = sizeof(*params);
38117 wdiEventData.pCBfnc = NULL;
38118 wdiEventData.pUserData = NULL;
38119
38120 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38121
38122} /* WDI_SetBcnMissPenaltyCount */
38123
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038124#endif
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053038125
38126/**
38127 * WDI_ProcessSetAllowedActionFramesInd() - Process Allowed action frames
38128 * Indication message and post it to HAL
38129 *
38130 * @pWDICtx: pointer to the WLAN DAL context
38131 * @pEventData: pointer to the event information structure
38132 *
38133 * Return: WDI_Status enumeration
38134 */
38135WDI_Status WDI_ProcessSetAllowedActionFramesInd(WDI_ControlBlockType *pWDICtx,
38136 WDI_EventInfoType *pEventData)
38137{
38138 wpt_uint8 *pSendBuffer;
38139 wpt_uint16 usDataOffset;
38140 wpt_uint16 usSendSize;
38141 wpt_uint16 usLen;
38142 struct WDI_AllowedActionFramesInd* pwdiAllowedActionFramesInd;
38143 tHalAllowedActionFrames* pAllowedActionFrames;
38144 WDI_Status wdiStatus;
38145
38146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38147 "%s", __func__);
38148
38149 if ((!pEventData) || (!pEventData->pEventData))
38150 {
38151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38152 "%s: Invalid parameters", __func__);
38153 WDI_ASSERT(0);
38154 return WDI_STATUS_E_FAILURE;
38155 }
38156
38157 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
38158 WDI_SET_ALLOWED_ACTION_FRAMES_IND,
38159 sizeof(tHalAllowedActionFrames),
38160 &pSendBuffer, &usDataOffset,
38161 &usSendSize))||
38162 (usSendSize < (usDataOffset + usLen)))
38163 {
38164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38165 "Unable to get send buffer in Allowed Action Frames req %p",
38166 pEventData);
38167 return WDI_STATUS_E_FAILURE;
38168 }
38169
38170 pwdiAllowedActionFramesInd =
38171 (struct WDI_AllowedActionFramesInd*)pEventData->pEventData;
38172 pAllowedActionFrames =
38173 (tHalAllowedActionFrames*)(pSendBuffer+usDataOffset);
38174 pAllowedActionFrames->actionFramesBitMask =
38175 pwdiAllowedActionFramesInd->bitmask;
38176 pAllowedActionFrames->reserved = pwdiAllowedActionFramesInd->reserved;
38177
38178 pWDICtx->pReqStatusUserData = NULL;
38179 pWDICtx->pfncRspCB = NULL;
38180
38181 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
38182 return (wdiStatus != WDI_STATUS_SUCCESS) ?
38183 wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38184}/*WDI_ProcessSetAllowedActionFramesInd*/
38185
38186/**
38187 * WDI_SetAllowedActionFramesInd() - Post Allowed Action Frames Indication to
38188 * WDI Main Event Handler
38189 * @params: pointer to the WDI_AllowedActionFramesInd structure
38190 *
38191 * Return: WDI_Status enumeration
38192 */
38193WDI_Status WDI_SetAllowedActionFramesInd(
38194 struct WDI_AllowedActionFramesInd *params)
38195{
38196 WDI_EventInfoType wdiEventData;
38197
38198 if (eWLAN_PAL_FALSE == gWDIInitialized)
38199 {
38200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38201 "WDI API call before module is initialized - Fail req");
38202 return WDI_STATUS_E_NOT_ALLOWED;
38203 }
38204
38205 wdiEventData.wdiRequest = WDI_SET_ALLOWED_ACTION_FRAMES_IND;
38206 wdiEventData.pEventData = params;
38207 wdiEventData.uEventDataSize = sizeof(*params);
38208 wdiEventData.pCBfnc = NULL;
38209 wdiEventData.pUserData = NULL;
38210
38211 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38212}
Agrawal Ashish17ef5082016-10-17 18:33:21 +053038213#ifdef SAP_AUTH_OFFLOAD
38214/**
38215 * WDI_ProcessSapAuthOffloadInd() - Process SAP AUTH ofload
38216 * Indication message and post it to HAL
38217 *
38218 * @pWDICtx: pointer to the WLAN DAL context
38219 * @pEventData: pointer to the event information structure
38220 *
38221 * Return: WDI_Status enumeration
38222 */
38223WDI_Status
38224WDI_ProcessSapAuthOffloadInd
38225(
38226 WDI_ControlBlockType* pWDICtx,
38227 WDI_EventInfoType* pEventData
38228 )
38229{
38230 wpt_uint8* pSendBuffer = NULL;
38231 wpt_uint16 usDataOffset = 0;
38232 wpt_uint16 usSendSize = 0;
38233 tSapOffloadEnableMsg *sapOffloadEnableIndParam;
38234 struct WDI_sap_ofl_enable_params *pwdiSapOflEnableParams;
38235 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38236 int buffer_len = 0;
38237
38238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38239
38240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38241 "%s", __func__);
38242
38243 /*-------------------------------------------------------------------------
38244 Sanity check
38245 -------------------------------------------------------------------------*/
38246 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
38247 {
38248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38249 "%s: Invalid parameters", __func__);
38250 WDI_ASSERT(0);
38251 return WDI_STATUS_E_FAILURE;
38252 }
38253 /*-----------------------------------------------------------------------
38254 Get message buffer
38255 -----------------------------------------------------------------------*/
38256 pwdiSapOflEnableParams =
38257 (struct WDI_sap_ofl_enable_params*)pEventData->pEventData;
38258
38259 if (pwdiSapOflEnableParams->psk_len)
38260 buffer_len = pwdiSapOflEnableParams->psk_len +
38261 sizeof(tSapOffloadEnableMsg) - sizeof(tANI_U8);
38262 else
38263 buffer_len = sizeof(tSapOffloadEnableMsg);
38264
38265 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38266 WDI_PROCESS_SAP_AUTH_OFFLOAD_IND,
38267 buffer_len,
38268 &pSendBuffer, &usDataOffset, &usSendSize))||
38269 ( usSendSize < (usDataOffset + sizeof(tSapOffloadEnableMsg) )))
38270 {
38271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38272 "Unable to get send buffer in SAP Auth offload Ind %p ",
38273 pEventData);
38274 WDI_ASSERT(0);
38275 return WDI_STATUS_E_FAILURE;
38276 }
38277 pwdiSapOflEnableParams =
38278 (struct WDI_sap_ofl_enable_params*)pEventData->pEventData;
38279 sapOffloadEnableIndParam =
38280 (tSapOffloadEnableMsg*)(pSendBuffer + usDataOffset);
38281 wpalMemoryCopy(&sapOffloadEnableIndParam->selfMacAddr,
38282 &pwdiSapOflEnableParams->macAddr, sizeof(wpt_macAddr));
38283
38284 sapOffloadEnableIndParam->enable = pwdiSapOflEnableParams->enable;
38285 sapOffloadEnableIndParam->rsn_authmode =
38286 pwdiSapOflEnableParams->rsn_authmode;
38287 sapOffloadEnableIndParam->rsn_ucastcipherset =
38288 pwdiSapOflEnableParams->rsn_ucastcipherset;
38289 sapOffloadEnableIndParam->rsn_mcastcipherset =
38290 pwdiSapOflEnableParams->rsn_mcastcipherset;
38291 sapOffloadEnableIndParam->psk_len = pwdiSapOflEnableParams->psk_len;
38292 wpalMemoryCopy(&sapOffloadEnableIndParam->psk, &pwdiSapOflEnableParams->key,
38293 pwdiSapOflEnableParams->psk_len);
38294 pWDICtx->pReqStatusUserData = NULL;
38295 pWDICtx->pfncRspCB = NULL;
38296 /*-------------------------------------------------------------------------
38297 Send SAP_AUTH_OFFLOAD_IND Indication to HAL
38298 -------------------------------------------------------------------------*/
38299 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
38300 return (wdiStatus != WDI_STATUS_SUCCESS) ?
38301 wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38302
38303}
38304
38305/**
38306 * WDI_process_sap_auth_offload() - Process SAP AUTH offload
38307 * Indication message and post it to HAL
38308 *
38309 * @pWDICtx: pointer to the WLAN DAL context
38310 * @pEventData: pointer to the event information structure
38311 *
38312 * Return: WDI_Status enumeration
38313 */
38314WDI_Status WDI_process_sap_auth_offload(
38315 struct WDI_sap_ofl_enable_params *params)
38316{
38317 WDI_EventInfoType wdiEventData;
38318
38319 if (eWLAN_PAL_FALSE == gWDIInitialized)
38320 {
38321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38322 "WDI API call before module is initialized - Fail req");
38323 return WDI_STATUS_E_NOT_ALLOWED;
38324 }
38325
38326 wdiEventData.wdiRequest = WDI_PROCESS_SAP_AUTH_OFFLOAD_IND;
38327 wdiEventData.pEventData = params;
38328 wdiEventData.uEventDataSize = sizeof(*params);
38329 wdiEventData.pCBfnc = NULL;
38330 wdiEventData.pUserData = NULL;
38331
38332 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38333}
38334#endif