blob: 406b4fc4bc9dfe76bb6b23ea0c5a8b5dd042e8ec [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
Sachin Ahuja825082e2014-11-25 17:34:36 +0530192 ,FEATURE_NOT_SUPPORTED //45
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530193 ,DISA //46
Abhishek Singh85b74712014-10-08 11:38:19 +0530194 ,FW_STATS //47
Sachin Ahuja825082e2014-11-25 17:34:36 +0530195 ,WPS_PRBRSP_TMPL //48
Abhishek Singh5fef4042014-11-25 18:33:00 +0530196 ,BCN_IE_FLT_DELTA //49
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +0530197 ,FEATURE_NOT_SUPPORTED //50
198#ifdef FEATURE_WLAN_TDLS
199 ,TDLS_OFF_CHANNEL //51
200#else
201 ,FEATURE_NOT_SUPPORTED //51
202#endif
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +0530203 ,RTT3 //52
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530204 ,MGMT_FRAME_LOGGING //53
Ganesh Kondabattinib18b3292015-03-16 16:59:26 +0530205 ,ENHANCED_TXBD_COMPLETION //54
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530206 ,LOGGING_ENHANCEMENT //55
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +0530207#ifdef WLAN_FEATURE_EXTSCAN
208 ,EXT_SCAN_ENHANCED //56
209#else
210 ,FEATURE_NOT_SUPPORTED //56
211#endif
c_manjeecfd1efb2015-09-25 19:32:34 +0530212 ,MEMORY_DUMP_SUPPORTED //57
Sushant Kaushik33200572015-08-05 16:46:20 +0530213 ,PER_PKT_STATS_SUPPORTED //58
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530214 ,FEATURE_NOT_SUPPORTED //59
Mukul Sharmaf1bd9322015-10-20 16:03:42 +0530215#ifdef FEATURE_EXT_LL_STAT
216 ,EXT_LL_STAT //60
217#else
218 ,FEATURE_NOT_SUPPORTED
219#endif
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530220 ,WIFI_CONFIG //61
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530221 ,ANTENNA_DIVERSITY_SELECTION //62
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530222};
Jeff Johnson295189b2012-06-20 16:38:30 -0700223
224/*--------------------------------------------------------------------------
225 WLAN DAL State Machine
226 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700227WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700228{
229 /*WDI_INIT_ST*/
230 {{
231 WDI_MainStart, /*WDI_START_EVENT*/
232 NULL, /*WDI_STOP_EVENT*/
233 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
234 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
235 WDI_MainClose, /*WDI_CLOSE_EVENT*/
236 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
237 }},
238
239 /*WDI_STARTED_ST*/
240 {{
241 WDI_MainStartStarted, /*WDI_START_EVENT*/
242 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
243 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
244 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
245 NULL, /*WDI_CLOSE_EVENT*/
246 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
247 }},
248
249 /*WDI_STOPPED_ST*/
250 {{
251 WDI_MainStart, /*WDI_START_EVENT*/
252 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
253 NULL, /*WDI_REQUEST_EVENT*/
254 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
255 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700256 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700257 }},
258
259 /*WDI_BUSY_ST*/
260 {{
261 WDI_MainStartBusy, /*WDI_START_EVENT*/
262 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
263 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
264 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
265 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
266 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
267 }}
268};
269
Jeff Johnsone7245742012-09-05 17:12:55 -0700270/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700271 DAL Request Processing Array - the functions in this table will only be
272 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700273 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700274 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700275WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700276{
277 /*INIT*/
278 WDI_ProcessStartReq, /* WDI_START_REQ */
279 WDI_ProcessStopReq, /* WDI_STOP_REQ */
280 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
281
282 /*SCAN*/
283 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
284 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
285 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
286 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
287
288 /*ASSOCIATION*/
289 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
290 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
291 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
292 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
293 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
294
295 /* Security */
296 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
297 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
298 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
299 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
300
301 /* QoS and BA APIs */
302 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
303 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
304 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
305 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
306 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
307
308 /* Miscellaneous Control APIs */
309 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
310 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
311 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
312 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
313 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
314
315 /*BA APIs*/
316 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
317 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
318
319 /*Beacon processing APIs*/
320 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
321 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
322
323 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
324 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
325 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
326 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700327 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700328 /* PowerSave APIs */
329 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
330 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
331 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
332 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
333 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
334 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
335 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
336 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
337 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
338 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
339 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
340 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
341 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
342 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
343 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
344 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
345 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
346 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
347 /*NV Download APIs*/
348 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
349 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
350 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
351#ifdef WLAN_FEATURE_VOWIFI_11R
352 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
353#else
354 NULL,
355#endif /* WLAN_FEATURE_VOWIFI_11R */
356 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
357 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700358 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700359
360#ifdef FEATURE_OEM_DATA_SUPPORT
361 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
362#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700363 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700364#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700365 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700366
367 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700368
369#ifdef FEATURE_WLAN_SCAN_PNO
370 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
371 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
372 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
373#else
374 NULL,
375 NULL,
376 NULL,
377#endif /* FEATURE_WLAN_SCAN_PNO */
378
379 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700380
Jeff Johnson295189b2012-06-20 16:38:30 -0700381#ifdef WLAN_FEATURE_PACKET_FILTERING
382 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700383 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700384 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700385 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700386 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700387 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700388 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700389 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700390#else
391 NULL,
392 NULL,
393 NULL,
394 NULL,
395#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700396 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700397 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
398 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
399
400 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800401#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700402 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
403#else
404 NULL,
405#endif
406
407#ifdef WLAN_FEATURE_GTK_OFFLOAD
408 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
409 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
410#else
411 NULL,
412 NULL,
413#endif // WLAN_FEATURE_GTK_OFFLOAD
414
415 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
416 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700417#ifdef WLAN_FEATURE_11AC
418 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800419#else
420 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700421#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800422#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800423 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
424#else
schang86c22c42013-03-13 18:41:24 -0700425 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800426#endif
schang86c22c42013-03-13 18:41:24 -0700427 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700428#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700429 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700430#else
431 NULL,
432#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530433#ifdef FEATURE_WLAN_TDLS
434 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
435#else
436 NULL,
437#endif
Leo Chang9056f462013-08-01 19:21:11 -0700438#ifdef FEATURE_WLAN_LPHB
439 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
440#else
441 NULL,
442#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530443
444#ifdef FEATURE_WLAN_BATCH_SCAN
445 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
446#else
447 NULL,
448#endif /* FEATURE_WLAN_BATCH_SCAN */
449
Arif Hussaina5ebce02013-08-09 15:09:58 -0700450 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800451
452 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530453
454 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530455
456#ifdef WLAN_FEATURE_LINK_LAYER_STATS
457 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
458 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
459 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
460#else
461 NULL,
462 NULL,
463 NULL,
464#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530465#ifdef WLAN_FEATURE_EXTSCAN
466 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
467 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
468 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
469 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
470 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
471 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530472 WDI_ProcessEXTScanSetSSIDHotlistReq, /* WDI_EXTSCAN_SET_SSID_HOTLIST_REQ */
473 WDI_ProcessEXTScanResetSSIDHotlistReq, /* WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ */
Dino Mycle41bdc942014-06-10 11:30:24 +0530474#else
475 NULL,
476 NULL,
477 NULL,
478 NULL,
479 NULL,
480 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530481 NULL,
482 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530483#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530484 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530485
486 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530487
488 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530489
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530490 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530491 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530492
493 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
494
Katya Nigamf0511f62015-05-05 16:40:57 +0530495 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
496 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530497 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530498 WDI_ProcessFwrMemDumpReq, /* WDI_FWR_MEM_DUMP_REQ*/
499
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530500 WDI_ProcessRssiMonitorStartReq, /* WDI_START_RSSI_MONITOR_REQ */
501 WDI_ProcessRssiMonitorStopReq, /* WDI_STOP_RSSI_MONITOR_REQ */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530502
503 WDI_ProcessWifiConfigReq, /*WDI_WIFI_CONFIG_SET_REQ*/
schang86c22c42013-03-13 18:41:24 -0700504 /*-------------------------------------------------------------------------
505 Indications
506 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700507 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800508 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530509 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
510 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700511#ifdef WLAN_FEATURE_11W
512 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
513#else
514 NULL,
515#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700516 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
517 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530518#ifdef FEATURE_WLAN_BATCH_SCAN
519 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
520 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
521#else
522 NULL,
523 NULL,
524#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700525 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800526
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530527 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800528 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
529
530 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530531#ifdef FEATURE_WLAN_TDLS
532 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
533#else
534 NULL,
535#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530536 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530537 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +0530538 WDI_ProcessEnableDisableCAEventInd, /* WDI_SEND_FREQ_RANGE_CONTROL_IND */
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +0530539
540#ifdef WLAN_FEATURE_EXTSCAN
541 WDI_ProcessHighPriorityDataInfoInd, /* WDI_HIGH_PRIORITY_DATA_INFO_IND */
542#else
543 NULL,
544#endif /* WLAN_FEATURE_EXTSCAN */
545
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530546#ifdef FEATURE_OEM_DATA_SUPPORT
547 WDI_ProcessStartOemDataReqIndNew, /* WDI_START_OEM_DATA_REQ_IND_NEW */
548#else
549 NULL,
550#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530551 WDI_ProcessGetCurrentAntennaIndex, /* WDI_ANTENNA_DIVERSITY_SELECTION_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700552};
553
554
Jeff Johnsone7245742012-09-05 17:12:55 -0700555/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700556 DAL Request Processing Array - the functions in this table will only be
557 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700558 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700559 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700560WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700561{
562 /*INIT*/
563 WDI_ProcessStartRsp, /* WDI_START_RESP */
564 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
565 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
566
567 /*SCAN*/
568 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
569 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
570 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
571 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
572
573 /* ASSOCIATION*/
574 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
575 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
576 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
577 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
578 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
579
580 /* Security */
581 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
582 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
583 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
584 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
585
586 /* QoS and BA APIs */
587 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
588 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
589 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
590 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
591 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
592
593 /* Miscellaneous Control APIs */
594 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
595 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
596 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
597 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
598 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
599
600 /* BA APIs*/
601 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
602 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700603
Jeff Johnson295189b2012-06-20 16:38:30 -0700604 /* IBSS APIs*/
605 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
606 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
607
608 /*Soft AP APIs*/
609 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
610 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
611 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
612 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
613
614 /* PowerSave APIs */
615 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
616 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
617 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
618 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
619 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
620 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
621 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
622 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
623 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
624 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
625 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
626 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
627 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
628 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
629 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
630 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
631 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
632 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700633
Jeff Johnson295189b2012-06-20 16:38:30 -0700634
635 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
636
637 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
638 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
639#ifdef WLAN_FEATURE_VOWIFI_11R
640 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
641#else
642 NULL,
643#endif /* WLAN_FEATURE_VOWIFI_11R */
644 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
645 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700646#ifdef FEATURE_OEM_DATA_SUPPORT
647 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
648#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700649 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700650#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700651 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
652
Jeff Johnson295189b2012-06-20 16:38:30 -0700653 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700654
Jeff Johnson295189b2012-06-20 16:38:30 -0700655 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700656
Jeff Johnsone7245742012-09-05 17:12:55 -0700657 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
658
Jeff Johnson295189b2012-06-20 16:38:30 -0700659#ifdef FEATURE_WLAN_SCAN_PNO
660 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
661 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
662 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
663#else
664 NULL,
665 NULL,
666 NULL,
667#endif // FEATURE_WLAN_SCAN_PNO
668
669 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700670 /*---------------------------------------------------------------------
671 Indications
672 ---------------------------------------------------------------------*/
673#ifdef WLAN_FEATURE_PACKET_FILTERING
674 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700675 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700676 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700677 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700678 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700679 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700680 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700681 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700682#else
683 NULL,
684 NULL,
685 NULL,
686 NULL,
687#endif // WLAN_FEATURE_PACKET_FILTERING
688
689 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
690 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
691
692 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800693#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700694 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
695#else
696 NULL,
697#endif
698
699#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700700 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
701 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700702#else
703 NULL,
704 NULL,
705#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700706 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
707 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700708#ifdef WLAN_FEATURE_11AC
709 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700710#else
711 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700712#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800713#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800714 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
715#else
716 NULL,
717#endif
schang86c22c42013-03-13 18:41:24 -0700718 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700719#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700720 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700721#else
722 NULL,
723#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530724#ifdef FEATURE_WLAN_TDLS
725 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
726#else
727 NULL,
728#endif
Leo Chang9056f462013-08-01 19:21:11 -0700729#ifdef FEATURE_WLAN_LPHB
730 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
731#else
732 NULL,
733#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530734
735#ifdef FEATURE_WLAN_BATCH_SCAN
736 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
737#else
738 NULL,
739#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800740 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530741
c_hpothu92367912014-05-01 15:18:17 +0530742 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800743
c_hpothu92367912014-05-01 15:18:17 +0530744 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
745
746 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800747
Sunil Duttbd736ed2014-05-26 21:19:41 +0530748
749#ifdef WLAN_FEATURE_LINK_LAYER_STATS
750 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
751 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
752 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
753#else
754 NULL,
755 NULL,
756 NULL,
757#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530758#ifdef WLAN_FEATURE_EXTSCAN
759 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
760 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
761 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
762 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
763 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
764 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530765 WDI_ProcessEXTScanSetHotlistSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_SSID_RSP */
766 WDI_ProcessEXTScanResetHotlistSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP */
Dino Mycle41bdc942014-06-10 11:30:24 +0530767#else
768 NULL,
769 NULL,
770 NULL,
771 NULL,
772 NULL,
773 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530774 NULL,
775 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530776#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530777 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530778
779 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530780
781 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530782 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530783 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530784
Srinivas Dasari32a79262015-02-19 13:04:49 +0530785 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
786
Katya Nigamf0511f62015-05-05 16:40:57 +0530787 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
788 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530789 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530790 WDI_ProcessFwrMemDumpRsp, /* WDI_FWR_MEM_DUMP_RSP */
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530791 WDI_ProcessRssiMonitorStartRsp, /* WDI_START_RSSI_MONITOR_RSP*/
792 WDI_ProcessRssiMonitorStopRsp, /* WDI_STOP_RSSI_MONITOR_RSP*/
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530793
794 WDI_ProcessWificonfigSetRsp, /* /WDI_WIFI_CONFIG_SET_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700795 /*---------------------------------------------------------------------
796 Indications
797 ---------------------------------------------------------------------*/
798 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
799 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
800 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
801 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
802 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
803 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
804
805 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
806
807 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
808
Jeff Johnson295189b2012-06-20 16:38:30 -0700809 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700810
811#ifdef FEATURE_WLAN_SCAN_PNO
812 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
813#else
814 NULL,
815#endif // FEATURE_WLAN_SCAN_PNO
816
817#ifdef WLAN_WAKEUP_EVENTS
818 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
819#else // WLAN_WAKEUP_EVENTS
820 NULL,
821#endif // WLAN_WAKEUP_EVENTS
822
823 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800824
Viral Modid86bde22012-12-10 13:09:21 -0800825 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530826#ifdef FEATURE_WLAN_TDLS
827 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
828#else
829 NULL,
830#endif
Leo Chang9056f462013-08-01 19:21:11 -0700831
832#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700833 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700834#else
835 NULL,
836#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700837
838 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700839
840 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530841
842#ifdef FEATURE_WLAN_BATCH_SCAN
843 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
844#else
845 NULL,
846#endif
847
Leo Chang0b0e45a2013-12-15 15:18:55 -0800848#ifdef FEATURE_WLAN_CH_AVOID
849 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
850#else
851 NULL,
852#endif /* FEATURE_WLAN_CH_AVOID */
853
Sunil Duttbd736ed2014-05-26 21:19:41 +0530854 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
855#ifdef WLAN_FEATURE_LINK_LAYER_STATS
856 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
857#else
858 NULL,
859#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530860#ifdef WLAN_FEATURE_EXTSCAN
861 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
862 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
863 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
864 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530865 WDI_ProcessEXTScanSsidHotListResultInd, /* WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND */
Dino Mycle41bdc942014-06-10 11:30:24 +0530866#else
867 NULL,
868 NULL,
869 NULL,
870 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530871 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530872#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530873#ifdef FEATURE_WLAN_TDLS
874 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
875#else
876 NULL,
877#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530878 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530879 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530880 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530881 WDI_Process_RssiBreachedInd, /* WDI_HAL_RSSI_BREACHED_IND */
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530882#ifdef FEATURE_OEM_DATA_SUPPORT
883 WDI_ProcessStartOemDataRspIndNew, /* WDI_HAL_START_OEM_DATA_RSP_IND_NEW */
884#else
885 NULL,
886#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530887 WDI_ProcessGetCurrentAntennaIndexRsp, /* WDI_ANTENNA_DIVERSITY_SELECTION_RSP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700888};
889
890
Jeff Johnsone7245742012-09-05 17:12:55 -0700891/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700892 WLAN DAL Global Control Block
893 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700894WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700895static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
896
Jeff Johnsone7245742012-09-05 17:12:55 -0700897const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700898
899/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700900WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700901void* WDI_GET_PAL_CTX( void )
902{
Jeff Johnsone7245742012-09-05 17:12:55 -0700903 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700904}/*WDI_GET_PAL_CTX*/
905
Jeff Johnsone7245742012-09-05 17:12:55 -0700906/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700907 Helper inline converters
908 ============================================================================*/
909/*Convert WDI driver type into HAL driver type*/
910WPT_STATIC WPT_INLINE WDI_Status
911WDI_HAL_2_WDI_STATUS
912(
913 eHalStatus halStatus
914);
915
916/*Convert WDI request type into HAL request type*/
917WPT_STATIC WPT_INLINE tHalHostMsgType
918WDI_2_HAL_REQ_TYPE
919(
920 WDI_RequestEnumType wdiReqType
921);
922
923/*Convert WDI response type into HAL response type*/
924WPT_STATIC WPT_INLINE WDI_ResponseEnumType
925HAL_2_WDI_RSP_TYPE
926(
927 tHalHostMsgType halMsg
928);
929
930/*Convert WDI driver type into HAL driver type*/
931WPT_STATIC WPT_INLINE tDriverType
932WDI_2_HAL_DRV_TYPE
933(
934 WDI_DriverType wdiDriverType
935);
936
937/*Convert WDI stop reason into HAL stop reason*/
938WPT_STATIC WPT_INLINE tHalStopType
939WDI_2_HAL_STOP_REASON
940(
941 WDI_StopType wdiStopType
942);
943
944/*Convert WDI scan mode type into HAL scan mode type*/
945WPT_STATIC WPT_INLINE eHalSysMode
946WDI_2_HAL_SCAN_MODE
947(
948 WDI_ScanMode wdiScanMode
949);
950
951/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700952WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700953WDI_2_HAL_SEC_CH_OFFSET
954(
955 WDI_HTSecondaryChannelOffset wdiSecChOffset
956);
957
958/*Convert WDI BSS type into HAL BSS type*/
959WPT_STATIC WPT_INLINE tSirBssType
960WDI_2_HAL_BSS_TYPE
961(
962 WDI_BssType wdiBSSType
963);
964
965/*Convert WDI NW type into HAL NW type*/
966WPT_STATIC WPT_INLINE tSirNwType
967WDI_2_HAL_NW_TYPE
968(
969 WDI_NwType wdiNWType
970);
971
972/*Convert WDI chanel bonding type into HAL cb type*/
973WPT_STATIC WPT_INLINE ePhyChanBondState
974WDI_2_HAL_CB_STATE
975(
976 WDI_PhyChanBondState wdiCbState
977);
978
979/*Convert WDI chanel bonding type into HAL cb type*/
980WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
981WDI_2_HAL_HT_OPER_MODE
982(
983 WDI_HTOperatingMode wdiHTOperMode
984);
985
986/*Convert WDI mimo PS type into HAL mimo PS type*/
987WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
988WDI_2_HAL_MIMO_PS
989(
990 WDI_HTMIMOPowerSaveState wdiHTOperMode
991);
992
993/*Convert WDI ENC type into HAL ENC type*/
994WPT_STATIC WPT_INLINE tAniEdType
995WDI_2_HAL_ENC_TYPE
996(
997 WDI_EncryptType wdiEncType
998);
999
1000/*Convert WDI WEP type into HAL WEP type*/
1001WPT_STATIC WPT_INLINE tAniWepType
1002WDI_2_HAL_WEP_TYPE
1003(
1004 WDI_WepType wdiWEPType
1005);
1006
1007/*Convert WDI Link State into HAL Link State*/
1008WPT_STATIC WPT_INLINE tSirLinkState
1009WDI_2_HAL_LINK_STATE
1010(
1011 WDI_LinkStateType wdiLinkState
1012);
1013
Jeff Johnsone7245742012-09-05 17:12:55 -07001014/*Translate a STA Context from WDI into HAL*/
1015WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -07001016void
1017WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -07001018(
Jeff Johnson295189b2012-06-20 16:38:30 -07001019 tConfigStaParams* phalConfigSta,
1020 WDI_ConfigStaReqInfoType* pwdiConfigSta
1021);
Jeff Johnsone7245742012-09-05 17:12:55 -07001022
1023/*Translate a Rate set info from WDI into HAL*/
1024WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -07001025WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -07001026(
Jeff Johnson295189b2012-06-20 16:38:30 -07001027 tSirMacRateSet* pHalRateSet,
1028 WDI_RateSet* pwdiRateSet
1029);
1030
1031/*Translate an EDCA Parameter Record from WDI into HAL*/
1032WPT_STATIC WPT_INLINE void
1033WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -07001034(
Jeff Johnson295189b2012-06-20 16:38:30 -07001035 tSirMacEdcaParamRecord* phalEdcaParam,
1036 WDI_EdcaParamRecord* pWDIEdcaParam
1037);
1038
1039/*Copy a management frame header from WDI fmt into HAL fmt*/
1040WPT_STATIC WPT_INLINE void
1041WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
1042(
1043 tSirMacMgmtHdr* pmacMgmtHdr,
1044 WDI_MacMgmtHdr* pwdiMacMgmtHdr
1045);
1046
1047/*Copy config bss parameters from WDI fmt into HAL fmt*/
1048WPT_STATIC WPT_INLINE void
1049WDI_CopyWDIConfigBSSToHALConfigBSS
1050(
1051 tConfigBssParams* phalConfigBSS,
1052 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1053);
1054
Jeff Johnsone7245742012-09-05 17:12:55 -07001055/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001056 pointed to by user data */
1057WPT_STATIC WPT_INLINE void
1058WDI_ExtractRequestCBFromEvent
1059(
1060 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001061 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001062 void** ppUserData
1063);
1064
1065wpt_uint8
1066WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001067(
Jeff Johnson295189b2012-06-20 16:38:30 -07001068 WDI_ControlBlockType* pWDICtx,
1069 WDI_BSSSessionType** ppSession
1070);
1071
1072void
1073WDI_AddBcastSTAtoSTATable
1074(
1075 WDI_ControlBlockType* pWDICtx,
1076 WDI_AddStaParams * staParams,
1077 wpt_uint16 usBcastStaIdx
1078);
1079
1080WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001081(
Jeff Johnson295189b2012-06-20 16:38:30 -07001082 WDI_ControlBlockType* pWDICtx,
1083 WDI_EventInfoType* pEventData
1084);
1085
1086void
1087WDI_SetPowerStateCb
1088(
1089 wpt_status status,
1090 unsigned int dxePhyAddr,
1091 void *pContext
1092);
1093
Jeff Johnson295189b2012-06-20 16:38:30 -07001094/**
1095 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001096
1097 @param wdiReqMsgId: WDI Message request Id
1098
1099 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001100 @return Result of the function call
1101*/
1102static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1103{
1104 switch (wdiReqMsgId)
1105 {
1106 CASE_RETURN_STRING( WDI_START_REQ );
1107 CASE_RETURN_STRING( WDI_STOP_REQ );
1108 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1109 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1110 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1111 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1112 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1113 CASE_RETURN_STRING( WDI_JOIN_REQ );
1114 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1115 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1116 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1117 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1118 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1119 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1120 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1121 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1122 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1123 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1124 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1125 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1126 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1127 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001128 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001129 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1130 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1131 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1132 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1133 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1134 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1135 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1136 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1137 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1138 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1139 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1140 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001141 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001142 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301143#ifdef FEATURE_WLAN_TDLS
1144 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301145 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301146#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001147 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1148 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1149 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1150 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1151 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1152 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1153 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1154 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1155 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1156 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1157 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1158 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1159 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1160 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1161 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1162 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1163 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1164 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1165 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1166 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1167 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1168 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1169 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1170 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1171 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001172 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001173 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1174 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1175 #ifdef FEATURE_WLAN_SCAN_PNO
1176 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1177 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1178 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1179 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001180#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001181 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001182#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001183 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1184 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1185 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1186 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1187 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1188 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1189 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1190 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1191 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301192 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001193 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001194 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001195#ifdef WLAN_FEATURE_11W
1196 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1197#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301198#ifdef FEATURE_WLAN_BATCH_SCAN
1199 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1200 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1201 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1202#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301203 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1204 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001205 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301206#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1207 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1208 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1209 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1210#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301211#ifdef WLAN_FEATURE_EXTSCAN
1212 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1213 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1214 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1215 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1216 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1217 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301218 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SSID_HOTLIST_REQ);
1219 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ);
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +05301220 CASE_RETURN_STRING( WDI_HIGH_PRIORITY_DATA_INFO_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301221#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301222 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301223 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301224 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301225 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301226 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301227 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301228 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301229 CASE_RETURN_STRING( WDI_MON_START_REQ );
1230 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301231 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301232 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
c_manjeecfd1efb2015-09-25 19:32:34 +05301233 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_REQ);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301234 CASE_RETURN_STRING( WDI_START_RSSI_MONITOR_REQ );
1235 CASE_RETURN_STRING( WDI_STOP_RSSI_MONITOR_REQ );
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301236 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ_IND_NEW );
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301237 CASE_RETURN_STRING( WDI_ANTENNA_DIVERSITY_SELECTION_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 default:
1239 return "Unknown WDI MessageId";
1240 }
1241}
1242
1243
1244
1245/**
1246 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001247
1248 @param wdiRespMsgId: WDI Message response Id
1249
1250 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001251 @return Result of the function call
1252*/
1253static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1254{
1255 switch (wdiRespMsgId)
1256 {
1257 CASE_RETURN_STRING( WDI_START_RESP );
1258 CASE_RETURN_STRING( WDI_STOP_RESP );
1259 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1260 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1261 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1262 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1263 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1264 CASE_RETURN_STRING( WDI_JOIN_RESP );
1265 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1266 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1267 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1268 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1269 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1270 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1271 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1272 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1273 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1274 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1275 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1276 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1277 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1278 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1279 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1280 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1281 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1282 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1283 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1284 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1285 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1286 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1287 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1288 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1289 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1290 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1291 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301292#ifdef FEATURE_WLAN_TDLS
1293 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301294 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301295 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1296#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001297 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1298 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1299 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1300 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1301 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1302 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1303 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1304 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1305 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1306 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1307 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1308 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1309 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1310 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1311 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1312 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1313 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1314 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1315 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1316 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1317 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1318 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1319 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1320 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1321 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001322 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001323 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1324 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1325 #ifdef FEATURE_WLAN_SCAN_PNO
1326 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1327 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1328 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1329 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001330#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001331 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001332#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001333 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1334 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1335 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1336 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1337 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1338 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1339 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1340 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001341 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301342#ifdef FEATURE_WLAN_BATCH_SCAN
1343 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1344#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001345 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301346 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301347 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301348#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1349 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1350 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1351 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1352#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301353#ifdef WLAN_FEATURE_EXTSCAN
1354 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1355 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1356 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1357 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1358 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1359 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301360 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
1361 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301362 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1363 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1364 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1365 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301366 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301367#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301368 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301369 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301370 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301371 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301372 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
c_manjeecfd1efb2015-09-25 19:32:34 +05301373 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_RSP);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301374 CASE_RETURN_STRING (WDI_START_RSSI_MONITOR_RSP);
1375 CASE_RETURN_STRING (WDI_STOP_RSSI_MONITOR_RSP);
Arun Khandavalli7eeb1592015-10-19 21:36:57 +05301376 CASE_RETURN_STRING( WDI_WIFI_CONFIG_SET_RSP);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301377#ifdef FEATURE_OEM_DATA_SUPPORT
1378 CASE_RETURN_STRING (WDI_HAL_START_OEM_DATA_RSP_IND_NEW);
1379#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301380 CASE_RETURN_STRING (WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001381 default:
1382 return "Unknown WDI MessageId";
1383 }
1384}
1385
1386/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301387 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1388 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301389 @param capabilityBitmap - Base address of a 4 element Bitmap array
1390 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301391 @see
1392 @returns None
1393 */
1394void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1395{
Abhishek Singh08b60122014-02-04 18:05:23 +05301396 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301397 char *pTempCapStr = NULL;
1398 char *pCapStr = NULL;
1399 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1400 if (NULL == pTempCapStr)
1401 {
1402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1403 "Memory allocation failed for CapStr");
1404 return;
1405 }
1406
1407 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301408 for (j = 0; j < 4; j++) {
1409 for (i = 0; i < 32; i++) {
1410 if ((*(capabilityBitmap + j) & (1 << i))) {
1411 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301412 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1413 pCapStr += strlen("MCC");
1414 break;
1415 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1416 pCapStr += strlen("P2P");
1417 break;
1418 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1419 pCapStr += strlen("DOT11AC");
1420 break;
1421 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1422 pCapStr += strlen("SLM_SESSIONIZATION");
1423 break;
1424 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1425 pCapStr += strlen("DOT11AC_OPMODE");
1426 break;
1427 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1428 pCapStr += strlen("SAP32STA");
1429 break;
1430 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1431 pCapStr += strlen("TDLS");
1432 break;
1433 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1434 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1435 break;
1436 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1437 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1438 break;
1439 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1440 pCapStr += strlen("BEACON_OFFLOAD");
1441 break;
1442 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1443 pCapStr += strlen("SCAN_OFFLOAD");
1444 break;
1445 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1446 pCapStr += strlen("ROAM_OFFLOAD");
1447 break;
1448 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1449 pCapStr += strlen("BCN_MISS_OFFLOAD");
1450 break;
1451 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1452 pCapStr += strlen("STA_POWERSAVE");
1453 break;
1454 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1455 pCapStr += strlen("AP_UAPSD");
1456 break;
1457 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1458 pCapStr += strlen("AP_DFS");
1459 break;
1460 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1461 pCapStr += strlen("BLOCKACK");
1462 break;
1463 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1464 pCapStr += strlen("PHY_ERR");
1465 break;
1466 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1467 pCapStr += strlen("BCN_FILTER");
1468 break;
1469 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1470 pCapStr += strlen("RTT");
1471 break;
1472 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1473 pCapStr += strlen("RATECTRL");
1474 break;
1475 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1476 pCapStr += strlen("WOW");
1477 break;
1478 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1479 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1480 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301481 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1482 pCapStr += strlen("FW_IN_TX_PATH");
1483 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301484 case HT40_OBSS_SCAN:
1485 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1486 "%s", "HT40_OBSS_SCAN");
1487 pCapStr += strlen("HT40_OBSS_SCAN");
1488 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301489 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1490 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1491 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1492 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1493 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301494 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1495 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1496 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301497 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1498 pCapStr += strlen("CH_SWITCH_V1");
1499 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301500#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1501 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1502 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1503 break;
1504#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301505#ifdef WLAN_FEATURE_EXTSCAN
1506 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1507 pCapStr += strlen("EXTENDED_SCAN");
1508 break;
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +05301509 case EXT_SCAN_ENHANCED: snprintf(pCapStr, sizeof("EXT_SCAN_ENHANCED"), "%s", "EXT_SCAN_ENHANCED");
1510 pCapStr += strlen("EXT_SCAN_ENHANCED");
1511 break;
Dino Myclee8843b32014-07-04 14:21:45 +05301512#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301513 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1514 pCapStr += strlen("MU_MIMO");
1515 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301516
Mihir Shetec34258c2014-07-30 17:50:27 +05301517 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1518 pCapStr += strlen("DYNAMIC_WMM_PS");
1519 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301520 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1521 pCapStr += strlen("FW_STATS");
1522 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301523 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1524 pCapStr += strlen("MAC_SPOOFED_SCAN");
1525 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301526 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1527 pCapStr += strlen("WPS_PRBRSP_TMPL");
1528 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301529 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1530 pCapStr += strlen("BCN_IE_FLT_DELTA");
1531 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301532 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1533 pCapStr += strlen("MGMT_FRAME_LOGGING");
1534 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301535 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1536 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1537 break;
1538
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301539 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1540 pCapStr += strlen("DISA");
1541 break;
1542
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301543 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1544 pCapStr += strlen("TDLS_OFF_CHANNEL");
1545 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301546 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1547 pCapStr += strlen("LOGGING_ENHANCEMENT");
1548 break;
c_manjeecfd1efb2015-09-25 19:32:34 +05301549 case MEMORY_DUMP_SUPPORTED:snprintf(pCapStr, sizeof("FW_MEM_DUMP_LOGGING"), "%s", "FW_MEM_DUMP_LOGGING");
1550 pCapStr += strlen("FW_MEM_DUMP_LOGGING");
1551 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301552 case PER_PKT_STATS_SUPPORTED: snprintf(pCapStr, sizeof("PER_PKT_STATS_SUPPORTED"), "%s", "PER_PKT_STATS_SUPPORTED");
1553 pCapStr += strlen("PER_PKT_STATS_SUPPORTED");
1554 break;
Mukul Sharmaf1bd9322015-10-20 16:03:42 +05301555 case EXT_LL_STAT: snprintf(pCapStr, sizeof("EXT_LL_STAT"), "%s", "EXT_LL_STAT");
1556 pCapStr += strlen("EXT_LL_STAT");
1557 break;
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +05301558 case RTT3: snprintf(pCapStr, sizeof("RTT3"), "%s", "RTT3");
1559 pCapStr += strlen("RTT3");
1560 break;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301561 case ANTENNA_DIVERSITY_SELECTION:
1562 snprintf(pCapStr,
1563 sizeof("ANTENNA_DIVERSITY_SELECTION"), "%s",
1564 "ANTENNA_DIVERSITY_SELECTION");
1565 pCapStr += strlen("ANTENNA_DIVERSITY_SELECTION");
1566 break;
Abhishek Singh08b60122014-02-04 18:05:23 +05301567 }
1568 *pCapStr++ = ',';
1569 *pCapStr++ = ' ';
1570 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301571 }
1572 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301573 pCapStr -= 2;
1574 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301576 if (pTempCapStr)
1577 {
1578 vos_mem_free(pTempCapStr);
1579 pTempCapStr = NULL;
1580 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301581}
1582
1583/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001585
1586 @param halStatusId: HAL status Id
1587
1588 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001589 @return Result of the function call
1590*/
1591static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1592{
1593 switch (halStatusId)
1594 {
1595 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1596 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1597 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1598 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1599 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1600 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1601 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1602 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1603 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1604 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1605 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1606 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1607 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1608 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1609 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1610 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1611 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1612 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1613 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1614 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1615 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1616 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1617 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1618 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1619 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1620 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1621 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1622 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1623 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1624 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1625 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1626 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1627 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1628 default:
1629 return "Unknown HAL status";
1630 }
1631}
1632
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301633/**
1634 * wdi_state_info_dump() - prints state information of wdi layer
1635 */
1636static void wdi_state_info_dump(void)
1637{
1638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1639 "%s pending commands: %d", __func__,
1640 gWDICb.wptPendingQueue.count);
1641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1642 "uGlobalState %d wdiExpectedResponse: %d",
1643 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
1644}
1645
1646
1647/**
1648 * wdi_register_debug_callback() - registration function for wdi layer
1649 * to print WDI state information
1650 */
1651static void wdi_register_debug_callback(void)
1652{
1653 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
1654}
1655
1656
Jeff Johnsone7245742012-09-05 17:12:55 -07001657/*========================================================================
1658
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001660
Jeff Johnson295189b2012-06-20 16:38:30 -07001661==========================================================================*/
1662
1663/**
1664 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001665
Jeff Johnson295189b2012-06-20 16:38:30 -07001666 DAL will allocate all the resources it needs. It will open PAL, it will also
1667 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001668 DXE/SMD or any other drivers that they need.
1669
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301670 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001671 ppWDIGlobalCtx: output pointer of Global Context
1672 pWdiDevCapability: output pointer of device capability
1673
1674 @return Result of the function call
1675*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001676WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001677WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001678(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301679 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001680 void** ppWDIGlobalCtx,
1681 WDI_DeviceCapabilityType* pWdiDevCapability,
1682 unsigned int driverType
1683)
1684{
1685 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001686 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001688 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1690
1691 /*---------------------------------------------------------------------
1692 Sanity check
1693 ---------------------------------------------------------------------*/
1694 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1695 {
1696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1697 "Invalid input parameters in WDI_Init");
1698
Jeff Johnsone7245742012-09-05 17:12:55 -07001699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001700 }
1701
1702 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001703 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001704 ---------------------------------------------------------------------*/
1705 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1706 {
1707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1708 "WDI module already initialized - return");
1709
Jeff Johnsone7245742012-09-05 17:12:55 -07001710 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001711 }
1712
1713 /*Module is now initialized - this flag is to ensure the fact that multiple
1714 init will not happen on WDI
1715 !! - potential race does exist because read and set are not atomic,
1716 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001717 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001718
1719 /*Setup the control block */
1720 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301721 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001722
1723 /*Setup the STA Table*/
1724 wdiStatus = WDI_STATableInit(&gWDICb);
1725 if ( WDI_STATUS_SUCCESS != wdiStatus )
1726 {
1727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1728 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001729 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 goto fail_STATableInit;
1731 }
1732
1733 /*------------------------------------------------------------------------
1734 Open the PAL
1735 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301736 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001737 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1738 {
1739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1740 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001741 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001742 goto fail_wpalOpen;
1743 }
1744
1745 /*Initialize main synchro mutex - it will be used to ensure integrity of
1746 the main WDI Control Block*/
1747 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1748 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1749 {
1750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1751 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001752 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001753 goto fail_mutex;
1754 }
1755
1756 /*Initialize the response timer - it will be used to time all messages
1757 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001758 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1759 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 &gWDICb);
1761 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1762 {
1763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1764 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001765 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 goto fail_timer;
1767 }
1768
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001769 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1770 WDI_SsrTimerCB,
1771 &gWDICb);
1772 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1775 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001776 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001777 goto fail_timer2;
1778 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001779 /* Initialize the WDI Pending Request Queue*/
1780 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1781 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1782 {
1783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1784 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001785 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 goto fail_pend_queue;
1787 }
1788
1789 /*Init WDI Pending Assoc Id Queue */
1790 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1791 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1792 {
1793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1794 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001795 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 goto fail_assoc_queue;
1797 }
1798
1799 /*Initialize the BSS sessions pending Queue */
1800 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1801 {
1802 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1803 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1804 {
1805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1806 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001807 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 goto fail_bss_queue;
1809 }
1810 }
1811
1812 /*Indicate the control block is sufficiently initialized for callbacks*/
1813 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1814
1815 /*------------------------------------------------------------------------
1816 Initialize the Data Path Utility Module
1817 ------------------------------------------------------------------------*/
1818 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1819 if ( WDI_STATUS_SUCCESS != wdiStatus )
1820 {
1821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1822 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001823 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001824 goto fail_dp_util_init;
1825 }
1826
1827 /* Init Set power state event */
1828 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001829 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001830 {
1831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1832 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001833 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001834 goto fail_power_event;
1835 }
1836
1837 /* Init WCTS action event */
1838 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001839 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001840 {
1841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1842 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001843 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001844 goto fail_wcts_event;
1845 }
1846
1847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001848 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001849 ------------------------------------------------------------------------*/
1850 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1851 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001852 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001853 wctsCBs.wctsRxMsgCBData = &gWDICb;
1854
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001856 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001857 WDI_CT_CHANNEL_SIZE,
1858 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001859
1860 if ( NULL == gWDICb.wctsHandle )
1861 {
1862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001863 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001864 goto fail_wcts_open;
1865 }
1866
1867 gWDICb.driverMode = (tDriverType)driverType;
1868 /* FTM mode not need to open Transport Driver */
1869 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001870 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001871 /*------------------------------------------------------------------------
1872 Open the Data Transport
1873 ------------------------------------------------------------------------*/
1874 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1875 {
1876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001877 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001878 goto fail_wdts_open;
1879 }
1880 }
1881
1882 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001883 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301884 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 /*Send the context as a ptr to the global WDI Control Block*/
1886 *ppWDIGlobalCtx = &gWDICb;
1887
1888 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001889 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001890 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1891 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301892
1893 wdi_register_debug_callback();
1894
Jeff Johnson295189b2012-06-20 16:38:30 -07001895 return WDI_STATUS_SUCCESS;
1896
1897 /* ERROR handlers
1898 Undo everything that completed successfully */
1899
1900 fail_wdts_open:
1901 {
1902 wpt_status eventStatus;
1903
1904 /* Closing WCTS in this scenario is tricky since it has to close
1905 the SMD channel and then we get notified asynchronously when
1906 the channel has been closed. So we take some of the logic from
1907 the "normal" close procedure in WDI_Close()
1908 */
1909
1910 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 {
1913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001914 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 }
1916
1917 WCTS_CloseTransport(gWDICb.wctsHandle);
1918
1919 /* Wait for WCTS to close the control transport. If we were able
1920 to reset the event flag, then we'll wait for the event,
1921 otherwise we'll wait for a maximum amount of time required for
1922 the channel to be closed */
1923 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1924 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001925 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 WDI_WCTS_ACTION_TIMEOUT);
1927 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1928 {
1929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001930 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001931 }
1932 }
1933 else
1934 {
1935 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1936 }
1937 }
1938 fail_wcts_open:
1939 wpalEventDelete(&gWDICb.wctsActionEvent);
1940 fail_wcts_event:
1941 wpalEventDelete(&gWDICb.setPowerStateEvent);
1942 fail_power_event:
1943 WDI_DP_UtilsExit(&gWDICb);
1944 fail_dp_util_init:
1945 gWDICb.magic = 0;
1946 fail_bss_queue:
1947 /* entries 0 thru i-1 were successfully initialized */
1948 while (0 < i)
1949 {
1950 i--;
1951 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1952 }
1953 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1954 fail_assoc_queue:
1955 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1956 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001957 wpalTimerDelete(&gWDICb.ssrTimer);
1958 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 wpalTimerDelete(&gWDICb.wptResponseTimer);
1960 fail_timer:
1961 wpalMutexDelete(&gWDICb.wptMutex);
1962 fail_mutex:
1963 wpalClose(gWDICb.pPALContext);
1964 fail_wpalOpen:
1965 WDI_STATableClose(&gWDICb);
1966 fail_STATableInit:
1967 gWDIInitialized = eWLAN_PAL_FALSE;
1968
1969 return WDI_STATUS_E_FAILURE;
1970
1971}/*WDI_Init*/;
1972
1973/**
1974 @brief WDI_Start will be called when the upper MAC is ready to
1975 commence operation with the WLAN Device. Upon the call
1976 of this API the WLAN DAL will pack and send a HAL Start
1977 message to the lower RIVA sub-system if the SMD channel
1978 has been fully opened and the RIVA subsystem is up.
1979
1980 If the RIVA sub-system is not yet up and running DAL
1981 will queue the request for Open and will wait for the
1982 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001983 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001984
1985 WDI_Init must have been called.
1986
Jeff Johnsone7245742012-09-05 17:12:55 -07001987 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001988 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001989
Jeff Johnson295189b2012-06-20 16:38:30 -07001990 wdiStartRspCb: callback for passing back the response of
1991 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001992
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001994 callback
1995
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 @see WDI_Start
1997 @return Result of the function call
1998*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001999WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002000WDI_Start
2001(
2002 WDI_StartReqParamsType* pwdiStartParams,
2003 WDI_StartRspCb wdiStartRspCb,
2004 void* pUserData
2005)
2006{
2007 WDI_EventInfoType wdiEventData;
2008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2009
2010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002011 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002012 ------------------------------------------------------------------------*/
2013 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2014 {
2015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2016 "WDI API call before module is initialized - Fail request");
2017
Jeff Johnsone7245742012-09-05 17:12:55 -07002018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 }
2020
2021 /*------------------------------------------------------------------------
2022 Fill in Event data and post to the Main FSM
2023 ------------------------------------------------------------------------*/
2024 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002025 wdiEventData.pEventData = pwdiStartParams;
2026 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
2027 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 wdiEventData.pUserData = pUserData;
2029
2030 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2031
2032}/*WDI_Start*/
2033
2034/**
2035 @brief WDI_Stop will be called when the upper MAC is ready to
2036 stop any operation with the WLAN Device. Upon the call
2037 of this API the WLAN DAL will pack and send a HAL Stop
2038 message to the lower RIVA sub-system if the DAL Core is
2039 in started state.
2040
2041 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07002042
2043 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002044
2045 WDI_Start must have been called.
2046
Jeff Johnsone7245742012-09-05 17:12:55 -07002047 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002049
Jeff Johnson295189b2012-06-20 16:38:30 -07002050 wdiStopRspCb: callback for passing back the response of
2051 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002052
Jeff Johnson295189b2012-06-20 16:38:30 -07002053 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002054 callback
2055
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 @see WDI_Start
2057 @return Result of the function call
2058*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002059WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002060WDI_Stop
2061(
2062 WDI_StopReqParamsType* pwdiStopParams,
2063 WDI_StopRspCb wdiStopRspCb,
2064 void* pUserData
2065)
2066{
2067 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002068 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2070
2071 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002072 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 ------------------------------------------------------------------------*/
2074 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2075 {
2076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2077 "WDI API call before module is initialized - Fail request");
2078
Jeff Johnsone7245742012-09-05 17:12:55 -07002079 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 }
2081
Jeff Johnson43971f52012-07-17 12:26:56 -07002082 /*Access to the global state must be locked before cleaning */
2083 wpalMutexAcquire(&pWDICtx->wptMutex);
2084
2085 /*Clear all pending request*/
2086 WDI_ClearPendingRequests(pWDICtx);
2087
2088 /*We have completed cleaning unlock now*/
2089 wpalMutexRelease(&pWDICtx->wptMutex);
2090
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 /* Free the global variables */
2092 wpalMemoryFree(gpHostWlanFeatCaps);
2093 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002094 gpHostWlanFeatCaps = NULL;
2095 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002096
2097 /*------------------------------------------------------------------------
2098 Fill in Event data and post to the Main FSM
2099 ------------------------------------------------------------------------*/
2100 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 wdiEventData.pEventData = pwdiStopParams;
2102 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2103 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 wdiEventData.pUserData = pUserData;
2105
2106 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2107
2108}/*WDI_Stop*/
2109
2110
2111
2112/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002113 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 needs to interact with DAL. DAL will free its control
2115 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002116
2117 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002118
2119 WDI_Stop must have been called.
2120
2121 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002122
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 @see WDI_Stop
2124 @return Result of the function call
2125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002127WDI_Close
2128(
2129 void
2130)
2131{
2132 wpt_uint8 i;
2133 WDI_EventInfoType wdiEventData;
2134 wpt_status wptStatus;
2135 wpt_status eventStatus;
2136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2137
2138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002139 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002140 ------------------------------------------------------------------------*/
2141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2142 {
2143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2144 "WDI API call before module is initialized - Fail request");
2145
Jeff Johnsone7245742012-09-05 17:12:55 -07002146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002147 }
2148
2149 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2150 (the control transport will be closed by the FSM and we'll want
2151 to wait until that completes)*/
2152 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002153 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002154 {
2155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002156 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002157 /* fall through and try to finish closing via the FSM */
2158 }
2159
2160 /*------------------------------------------------------------------------
2161 Fill in Event data and post to the Main FSM
2162 ------------------------------------------------------------------------*/
2163 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002164 wdiEventData.pEventData = NULL;
2165 wdiEventData.uEventDataSize = 0;
2166 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 wdiEventData.pUserData = NULL;
2168
2169 gWDIInitialized = eWLAN_PAL_FALSE;
2170
2171 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2172
2173 /*Wait for WCTS to close the control transport
2174 (but only if we were able to reset the event flag*/
2175 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2176 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002177 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002178 WDI_WCTS_ACTION_TIMEOUT);
2179 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2180 {
2181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002182 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002183 }
2184 }
2185
2186 /* Destroy the WCTS action event */
2187 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2188 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2189 {
2190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2191 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002192 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002193 }
2194
2195 /* Destroy the Set Power State event */
2196 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2197 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2198 {
2199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2200 "WDI Close failed to destroy an event");
2201
Jeff Johnsone7245742012-09-05 17:12:55 -07002202 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002203 }
2204
2205 /*------------------------------------------------------------------------
2206 Closes the Data Path Utility Module
2207 ------------------------------------------------------------------------*/
2208 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2209 {
2210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2211 "WDI Init failed to close the DP Util Module");
2212
Jeff Johnsone7245742012-09-05 17:12:55 -07002213 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 }
2215
2216 /*destroy the BSS sessions pending Queue */
2217 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2218 {
2219 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2220 }
2221
2222 /* destroy the WDI Pending Assoc Id Request Queue*/
2223 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2224
2225 /* destroy the WDI Pending Request Queue*/
2226 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002227
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 /*destroy the response timer */
2229 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2230
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002231 /*destroy the SSR timer */
2232 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 /*invalidate the main synchro mutex */
2235 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2236 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2237 {
2238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2239 "Failed to delete mutex %d", wptStatus);
2240 WDI_ASSERT(0);
2241 }
2242
2243 /*Clear control block. note that this will clear the "magic"
2244 which will inhibit all asynchronous callbacks*/
2245 WDI_CleanCB(&gWDICb);
2246
2247 return wptStatus;
2248
2249}/*WDI_Close*/
2250
2251/**
2252 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2253 This will do most of the WDI stop & close
2254 operations without doing any handshake with Riva
2255
2256 This will also make sure that the control transport
2257 will NOT be closed.
2258
2259 This request will not be queued.
2260
2261
2262 WDI_Start must have been called.
2263
2264 @param closeTransport: Close control channel if this is set
2265
2266 @return Result of the function call
2267*/
2268WDI_Status
2269WDI_Shutdown
2270(
2271 wpt_boolean closeTransport
2272)
2273{
2274 WDI_EventInfoType wdiEventData;
2275 wpt_status wptStatus;
2276 int i = 0;
2277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2278
2279 /*------------------------------------------------------------------------
2280 Sanity Check
2281 ------------------------------------------------------------------------*/
2282 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2283 {
2284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2285 "WDI API call before module is initialized - Fail request");
2286
2287 return WDI_STATUS_E_NOT_ALLOWED;
2288 }
2289
2290 /*------------------------------------------------------------------------
2291 Fill in Event data and post to the Main FSM
2292 ------------------------------------------------------------------------*/
2293 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2294 wdiEventData.pEventData = NULL;
2295 wdiEventData.uEventDataSize = 0;
2296
2297 /* Shutdown will not be queued, if the state is busy timer will be
2298 * stopped & this message will be processed.*/
2299 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2300 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2301 {
2302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002303 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002304 }
2305 /* Destroy the Set Power State event */
2306 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2307 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2308 {
2309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2310 "WDI Close failed to destroy an event");
2311
2312 WDI_ASSERT(0);
2313 }
2314 /*------------------------------------------------------------------------
2315 Closes the Data Path Utility Module
2316 ------------------------------------------------------------------------*/
2317 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2318 {
2319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2320 "WDI Init failed to close the DP Util Module");
2321
2322 WDI_ASSERT(0);
2323 }
2324 if ( closeTransport )
2325 {
2326 /* Close control transport, called from module unload */
2327 WCTS_CloseTransport(gWDICb.wctsHandle);
2328 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002329 else
2330 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002331 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002332 the pending messages in the transport queue */
2333 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2334 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 /*destroy the BSS sessions pending Queue */
2336 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2337 {
2338 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2339 }
2340
2341 /* destroy the WDI Pending Assoc Id Request Queue*/
2342 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2343 /* destroy the WDI Pending Request Queue*/
2344 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2345 /*destroy the response timer */
2346 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002347 /*destroy the SSR timer */
2348 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002349
2350 /*invalidate the main synchro mutex */
2351 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2352 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2353 {
2354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002355 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 WDI_ASSERT(0);
2357 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002358 /* Free the global variables */
2359 wpalMemoryFree(gpHostWlanFeatCaps);
2360 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002361 gpHostWlanFeatCaps = NULL;
2362 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002363 /*Clear control block. note that this will clear the "magic"
2364 which will inhibit all asynchronous callbacks*/
2365 WDI_CleanCB(&gWDICb);
2366 return wptStatus;
2367
2368}/*WDI_Shutdown*/
2369
2370
Jeff Johnsone7245742012-09-05 17:12:55 -07002371/*========================================================================
2372
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002374
Jeff Johnson295189b2012-06-20 16:38:30 -07002375==========================================================================*/
2376
2377/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 the WLAN Device to get ready for a scan procedure. Upon
2380 the call of this API the WLAN DAL will pack and send a
2381 HAL Init Scan request message to the lower RIVA
2382 sub-system if DAL is in state STARTED.
2383
2384 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002385 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002386
2387 WDI_Start must have been called.
2388
2389 @param wdiInitScanParams: the init scan parameters as specified
2390 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002391
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 wdiInitScanRspCb: callback for passing back the response
2393 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002394
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002396 callback
2397
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 @see WDI_Start
2399 @return Result of the function call
2400*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002401WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002402WDI_InitScanReq
2403(
2404 WDI_InitScanReqParamsType* pwdiInitScanParams,
2405 WDI_InitScanRspCb wdiInitScanRspCb,
2406 void* pUserData
2407)
2408{
2409 WDI_EventInfoType wdiEventData;
2410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2411
2412 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002413 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 ------------------------------------------------------------------------*/
2415 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2416 {
2417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2418 "WDI API call before module is initialized - Fail request");
2419
Jeff Johnsone7245742012-09-05 17:12:55 -07002420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 }
2422
2423 /*------------------------------------------------------------------------
2424 Fill in Event data and post to the Main FSM
2425 ------------------------------------------------------------------------*/
2426 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 wdiEventData.pEventData = pwdiInitScanParams;
2428 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2429 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 wdiEventData.pUserData = pUserData;
2431
2432 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2433
2434}/*WDI_InitScanReq*/
2435
2436/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002437 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002438 wishes to change the Scan channel on the WLAN Device.
2439 Upon the call of this API the WLAN DAL will pack and
2440 send a HAL Start Scan request message to the lower RIVA
2441 sub-system if DAL is in state STARTED.
2442
2443 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002445
2446 WDI_InitScanReq must have been called.
2447
Jeff Johnsone7245742012-09-05 17:12:55 -07002448 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002449 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002450
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 wdiStartScanRspCb: callback for passing back the
2452 response of the start scan operation received from the
2453 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002454
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002456 callback
2457
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 @see WDI_InitScanReq
2459 @return Result of the function call
2460*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002461WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002462WDI_StartScanReq
2463(
2464 WDI_StartScanReqParamsType* pwdiStartScanParams,
2465 WDI_StartScanRspCb wdiStartScanRspCb,
2466 void* pUserData
2467)
2468{
2469 WDI_EventInfoType wdiEventData;
2470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2471
2472 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002474 ------------------------------------------------------------------------*/
2475 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2476 {
2477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2478 "WDI API call before module is initialized - Fail request");
2479
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 }
2482
2483 /*------------------------------------------------------------------------
2484 Fill in Event data and post to the Main FSM
2485 ------------------------------------------------------------------------*/
2486 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002487 wdiEventData.pEventData = pwdiStartScanParams;
2488 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2489 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 wdiEventData.pUserData = pUserData;
2491
2492 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2493
2494}/*WDI_StartScanReq*/
2495
2496
2497/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002498 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002499 wants to end scanning for a particular channel that it
2500 had set before by calling Scan Start on the WLAN Device.
2501 Upon the call of this API the WLAN DAL will pack and
2502 send a HAL End Scan request message to the lower RIVA
2503 sub-system if DAL is in state STARTED.
2504
2505 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002506 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002507
2508 WDI_StartScanReq must have been called.
2509
Jeff Johnsone7245742012-09-05 17:12:55 -07002510 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002511 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002512
Jeff Johnson295189b2012-06-20 16:38:30 -07002513 wdiEndScanRspCb: callback for passing back the response
2514 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002515
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002517 callback
2518
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 @see WDI_StartScanReq
2520 @return Result of the function call
2521*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002522WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002523WDI_EndScanReq
2524(
2525 WDI_EndScanReqParamsType* pwdiEndScanParams,
2526 WDI_EndScanRspCb wdiEndScanRspCb,
2527 void* pUserData
2528)
2529{
2530 WDI_EventInfoType wdiEventData;
2531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2532
2533 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002534 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002535 ------------------------------------------------------------------------*/
2536 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2537 {
2538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2539 "WDI API call before module is initialized - Fail request");
2540
Jeff Johnsone7245742012-09-05 17:12:55 -07002541 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 }
2543
2544 /*------------------------------------------------------------------------
2545 Fill in Event data and post to the Main FSM
2546 ------------------------------------------------------------------------*/
2547 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002548 wdiEventData.pEventData = pwdiEndScanParams;
2549 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2550 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 wdiEventData.pUserData = pUserData;
2552
2553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2554
2555}/*WDI_EndScanReq*/
2556
2557
2558/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 completed the scan process on the WLAN Device. Upon the
2561 call of this API the WLAN DAL will pack and send a HAL
2562 Finish Scan Request request message to the lower RIVA
2563 sub-system if DAL is in state STARTED.
2564
2565 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002567
2568 WDI_InitScanReq must have been called.
2569
Jeff Johnsone7245742012-09-05 17:12:55 -07002570 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002571 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002572
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wdiFinishScanRspCb: callback for passing back the
2574 response of the finish scan operation received from the
2575 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002576
Jeff Johnson295189b2012-06-20 16:38:30 -07002577 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002578 callback
2579
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 @see WDI_InitScanReq
2581 @return Result of the function call
2582*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002583WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002584WDI_FinishScanReq
2585(
2586 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2587 WDI_FinishScanRspCb wdiFinishScanRspCb,
2588 void* pUserData
2589)
2590{
2591 WDI_EventInfoType wdiEventData;
2592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2593
2594 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002595 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002596 ------------------------------------------------------------------------*/
2597 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2598 {
2599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2600 "WDI API call before module is initialized - Fail request");
2601
Jeff Johnsone7245742012-09-05 17:12:55 -07002602 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 }
2604
2605 /*------------------------------------------------------------------------
2606 Fill in Event data and post to the Main FSM
2607 ------------------------------------------------------------------------*/
2608 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 wdiEventData.pEventData = pwdiFinishScanParams;
2610 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2611 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002612 wdiEventData.pUserData = pUserData;
2613
2614 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2615
2616}/*WDI_FinishScanReq*/
2617
Jeff Johnsone7245742012-09-05 17:12:55 -07002618/*========================================================================
2619
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002621
Jeff Johnson295189b2012-06-20 16:38:30 -07002622==========================================================================*/
2623
2624/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002625 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 to start an association procedure to a BSS. Upon the
2627 call of this API the WLAN DAL will pack and send a HAL
2628 Join request message to the lower RIVA sub-system if
2629 DAL is in state STARTED.
2630
2631 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002632 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002633
2634 WDI_Start must have been called.
2635
Jeff Johnsone7245742012-09-05 17:12:55 -07002636 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002637 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002638
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 wdiJoinRspCb: callback for passing back the response of
2640 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002641
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002643 callback
2644
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 @see WDI_Start
2646 @return Result of the function call
2647*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002648WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002649WDI_JoinReq
2650(
2651 WDI_JoinReqParamsType* pwdiJoinParams,
2652 WDI_JoinRspCb wdiJoinRspCb,
2653 void* pUserData
2654)
2655{
2656 WDI_EventInfoType wdiEventData;
2657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2658
2659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002660 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002661 ------------------------------------------------------------------------*/
2662 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2663 {
2664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2665 "WDI API call before module is initialized - Fail request");
2666
Jeff Johnsone7245742012-09-05 17:12:55 -07002667 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 }
2669
2670 /*------------------------------------------------------------------------
2671 Fill in Event data and post to the Main FSM
2672 ------------------------------------------------------------------------*/
2673 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002674 wdiEventData.pEventData = pwdiJoinParams;
2675 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2676 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002677 wdiEventData.pUserData = pUserData;
2678
2679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2680
2681}/*WDI_JoinReq*/
2682
2683/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 wishes to configure the newly acquired or in process of
2686 being acquired BSS to the HW . Upon the call of this API
2687 the WLAN DAL will pack and send a HAL Config BSS request
2688 message to the lower RIVA sub-system if DAL is in state
2689 STARTED.
2690
2691 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002693
2694 WDI_JoinReq must have been called.
2695
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002698
Jeff Johnson295189b2012-06-20 16:38:30 -07002699 wdiConfigBSSRspCb: callback for passing back the
2700 response of the config BSS operation received from the
2701 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002702
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002704 callback
2705
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 @see WDI_JoinReq
2707 @return Result of the function call
2708*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002709WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002710WDI_ConfigBSSReq
2711(
2712 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2713 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2714 void* pUserData
2715)
2716{
2717 WDI_EventInfoType wdiEventData;
2718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2719
2720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002722 ------------------------------------------------------------------------*/
2723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2724 {
2725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2726 "WDI API call before module is initialized - Fail request");
2727
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 }
2730
2731 /*------------------------------------------------------------------------
2732 Fill in Event data and post to the Main FSM
2733 ------------------------------------------------------------------------*/
2734 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 wdiEventData.pEventData = pwdiConfigBSSParams;
2736 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2737 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002738 wdiEventData.pUserData = pUserData;
2739
2740 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2741
2742}/*WDI_ConfigBSSReq*/
2743
2744/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002746 disassociating from the BSS and wishes to notify HW.
2747 Upon the call of this API the WLAN DAL will pack and
2748 send a HAL Del BSS request message to the lower RIVA
2749 sub-system if DAL is in state STARTED.
2750
2751 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002753
2754 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2755
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002758
Jeff Johnson295189b2012-06-20 16:38:30 -07002759 wdiDelBSSRspCb: callback for passing back the response
2760 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002761
Jeff Johnson295189b2012-06-20 16:38:30 -07002762 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 callback
2764
2765 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 @return Result of the function call
2767*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002769WDI_DelBSSReq
2770(
2771 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2772 WDI_DelBSSRspCb wdiDelBSSRspCb,
2773 void* pUserData
2774)
2775{
2776 WDI_EventInfoType wdiEventData;
2777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2778
2779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002781 ------------------------------------------------------------------------*/
2782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2783 {
2784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2785 "WDI API call before module is initialized - Fail request");
2786
Jeff Johnsone7245742012-09-05 17:12:55 -07002787 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002788 }
2789
2790 /*------------------------------------------------------------------------
2791 Fill in Event data and post to the Main FSM
2792 ------------------------------------------------------------------------*/
2793 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002794 wdiEventData.pEventData = pwdiDelBSSParams;
2795 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2796 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002797 wdiEventData.pUserData = pUserData;
2798
2799 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2800
2801}/*WDI_DelBSSReq*/
2802
2803/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002804 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002805 associated to a BSS and wishes to configure HW for
2806 associated state. Upon the call of this API the WLAN DAL
2807 will pack and send a HAL Post Assoc request message to
2808 the lower RIVA sub-system if DAL is in state STARTED.
2809
2810 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002811 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002812
2813 WDI_JoinReq must have been called.
2814
2815 @param wdiPostAssocReqParams: the assoc parameters as specified
2816 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002817
Jeff Johnson295189b2012-06-20 16:38:30 -07002818 wdiPostAssocRspCb: callback for passing back the
2819 response of the post assoc operation received from the
2820 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002821
Jeff Johnson295189b2012-06-20 16:38:30 -07002822 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002823 callback
2824
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 @see WDI_JoinReq
2826 @return Result of the function call
2827*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002828WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002829WDI_PostAssocReq
2830(
2831 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2832 WDI_PostAssocRspCb wdiPostAssocRspCb,
2833 void* pUserData
2834)
2835{
2836 WDI_EventInfoType wdiEventData;
2837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2838
2839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002840 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 ------------------------------------------------------------------------*/
2842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2843 {
2844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2845 "WDI API call before module is initialized - Fail request");
2846
Jeff Johnsone7245742012-09-05 17:12:55 -07002847 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 }
2849
2850 /*------------------------------------------------------------------------
2851 Fill in Event data and post to the Main FSM
2852 ------------------------------------------------------------------------*/
2853 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002854 wdiEventData.pEventData = pwdiPostAssocReqParams;
2855 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2856 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002857 wdiEventData.pUserData = pUserData;
2858
2859 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2860
2861}/*WDI_PostAssocReq*/
2862
2863/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002864 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 association with another STA has ended and the station
2866 must be deleted from HW. Upon the call of this API the
2867 WLAN DAL will pack and send a HAL Del STA request
2868 message to the lower RIVA sub-system if DAL is in state
2869 STARTED.
2870
2871 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002872 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002873
2874 WDI_PostAssocReq must have been called.
2875
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002877 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002878
Jeff Johnson295189b2012-06-20 16:38:30 -07002879 wdiDelSTARspCb: callback for passing back the response
2880 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002881
Jeff Johnson295189b2012-06-20 16:38:30 -07002882 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002883 callback
2884
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 @see WDI_PostAssocReq
2886 @return Result of the function call
2887*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002889WDI_DelSTAReq
2890(
2891 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2892 WDI_DelSTARspCb wdiDelSTARspCb,
2893 void* pUserData
2894)
2895{
2896 WDI_EventInfoType wdiEventData;
2897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2898
2899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002901 ------------------------------------------------------------------------*/
2902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2903 {
2904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2905 "WDI API call before module is initialized - Fail request");
2906
Jeff Johnsone7245742012-09-05 17:12:55 -07002907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002908 }
2909
2910 /*------------------------------------------------------------------------
2911 Fill in Event data and post to the Main FSM
2912 ------------------------------------------------------------------------*/
2913 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 wdiEventData.pEventData = pwdiDelSTAParams;
2915 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2916 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002917 wdiEventData.pUserData = pUserData;
2918
2919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2920
2921}/*WDI_DelSTAReq*/
2922
Jeff Johnsone7245742012-09-05 17:12:55 -07002923/*========================================================================
2924
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002926
Jeff Johnson295189b2012-06-20 16:38:30 -07002927==========================================================================*/
2928
2929/**
2930 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2931 install a BSS encryption key on the HW. Upon the call of this
2932 API the WLAN DAL will pack and send a Set BSS Key request
2933 message to the lower RIVA sub-system if DAL is in state
2934 STARTED.
2935
2936 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002937 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002938
2939 WDI_PostAssocReq must have been called.
2940
Jeff Johnsone7245742012-09-05 17:12:55 -07002941 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002942 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002943
Jeff Johnson295189b2012-06-20 16:38:30 -07002944 wdiSetBSSKeyRspCb: callback for passing back the
2945 response of the set BSS Key operation received from the
2946 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002947
Jeff Johnson295189b2012-06-20 16:38:30 -07002948 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002949 callback
2950
Jeff Johnson295189b2012-06-20 16:38:30 -07002951 @see WDI_PostAssocReq
2952 @return Result of the function call
2953*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002954WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002955WDI_SetBSSKeyReq
2956(
2957 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2958 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2959 void* pUserData
2960)
2961{
2962 WDI_EventInfoType wdiEventData;
2963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2964
2965 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002966 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002967 ------------------------------------------------------------------------*/
2968 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2969 {
2970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2971 "WDI API call before module is initialized - Fail request");
2972
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 }
2975
2976 /*------------------------------------------------------------------------
2977 Fill in Event data and post to the Main FSM
2978 ------------------------------------------------------------------------*/
2979 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2981 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2982 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 wdiEventData.pUserData = pUserData;
2984
2985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2986
2987}/*WDI_SetBSSKeyReq*/
2988
2989/**
2990 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2991 uninstall a BSS key from HW. Upon the call of this API the
2992 WLAN DAL will pack and send a HAL Remove BSS Key request
2993 message to the lower RIVA sub-system if DAL is in state
2994 STARTED.
2995
2996 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002997 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002998
2999 WDI_SetBSSKeyReq must have been called.
3000
Jeff Johnsone7245742012-09-05 17:12:55 -07003001 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003002 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003003
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 wdiRemoveBSSKeyRspCb: callback for passing back the
3005 response of the remove BSS key operation received from
3006 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003007
Jeff Johnson295189b2012-06-20 16:38:30 -07003008 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003009 callback
3010
Jeff Johnson295189b2012-06-20 16:38:30 -07003011 @see WDI_SetBSSKeyReq
3012 @return Result of the function call
3013*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003014WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003015WDI_RemoveBSSKeyReq
3016(
3017 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
3018 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
3019 void* pUserData
3020)
3021{
3022 WDI_EventInfoType wdiEventData;
3023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3024
3025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003027 ------------------------------------------------------------------------*/
3028 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3029 {
3030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3031 "WDI API call before module is initialized - Fail request");
3032
Jeff Johnsone7245742012-09-05 17:12:55 -07003033 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003034 }
3035
3036 /*------------------------------------------------------------------------
3037 Fill in Event data and post to the Main FSM
3038 ------------------------------------------------------------------------*/
3039 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003040 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
3041 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
3042 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003043 wdiEventData.pUserData = pUserData;
3044
3045 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3046
3047}/*WDI_RemoveBSSKeyReq*/
3048
3049
3050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003051 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003052 ready to install a STA(ast) encryption key in HW. Upon
3053 the call of this API the WLAN DAL will pack and send a
3054 HAL Set STA Key request message to the lower RIVA
3055 sub-system if DAL is in state STARTED.
3056
3057 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003058 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003059
3060 WDI_PostAssocReq must have been called.
3061
Jeff Johnsone7245742012-09-05 17:12:55 -07003062 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003063 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003064
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 wdiSetSTAKeyRspCb: callback for passing back the
3066 response of the set STA key operation received from the
3067 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003068
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003070 callback
3071
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 @see WDI_PostAssocReq
3073 @return Result of the function call
3074*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003076WDI_SetSTAKeyReq
3077(
3078 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3079 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3080 void* pUserData
3081)
3082{
3083 WDI_EventInfoType wdiEventData;
3084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3085
3086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 ------------------------------------------------------------------------*/
3089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3090 {
3091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3092 "WDI API call before module is initialized - Fail request");
3093
Jeff Johnsone7245742012-09-05 17:12:55 -07003094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 }
3096
3097 /*------------------------------------------------------------------------
3098 Fill in Event data and post to the Main FSM
3099 ------------------------------------------------------------------------*/
3100 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003101 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3102 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3103 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 wdiEventData.pUserData = pUserData;
3105
3106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3107
3108}/*WDI_SetSTAKeyReq*/
3109
3110
3111/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003112 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003113 wants to uninstall a previously set STA key in HW. Upon
3114 the call of this API the WLAN DAL will pack and send a
3115 HAL Remove STA Key request message to the lower RIVA
3116 sub-system if DAL is in state STARTED.
3117
3118 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003120
3121 WDI_SetSTAKeyReq must have been called.
3122
Jeff Johnsone7245742012-09-05 17:12:55 -07003123 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003125
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 wdiRemoveSTAKeyRspCb: callback for passing back the
3127 response of the remove STA key operation received from
3128 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003129
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003131 callback
3132
Jeff Johnson295189b2012-06-20 16:38:30 -07003133 @see WDI_SetSTAKeyReq
3134 @return Result of the function call
3135*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003136WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003137WDI_RemoveSTAKeyReq
3138(
3139 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3140 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3141 void* pUserData
3142)
3143{
3144 WDI_EventInfoType wdiEventData;
3145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3146
3147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 ------------------------------------------------------------------------*/
3150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3151 {
3152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3153 "WDI API call before module is initialized - Fail request");
3154
Jeff Johnsone7245742012-09-05 17:12:55 -07003155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003156 }
3157
3158 /*------------------------------------------------------------------------
3159 Fill in Event data and post to the Main FSM
3160 ------------------------------------------------------------------------*/
3161 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003162 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3163 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3164 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 wdiEventData.pUserData = pUserData;
3166
3167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3168
3169}/*WDI_RemoveSTAKeyReq*/
3170
3171
3172/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003174 wants to install a STA Bcast encryption key on the HW.
3175 Upon the call of this API the WLAN DAL will pack and
3176 send a HAL Start request message to the lower RIVA
3177 sub-system if DAL is in state STARTED.
3178
3179 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003181
3182 WDI_PostAssocReq must have been called.
3183
Jeff Johnsone7245742012-09-05 17:12:55 -07003184 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003185 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003186
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 wdiSetSTABcastKeyRspCb: callback for passing back the
3188 response of the set BSS Key operation received from the
3189 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003190
Jeff Johnson295189b2012-06-20 16:38:30 -07003191 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003192 callback
3193
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 @see WDI_PostAssocReq
3195 @return Result of the function call
3196*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003197WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003198WDI_SetSTABcastKeyReq
3199(
3200 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3201 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3202 void* pUserData
3203)
3204
3205{
3206 WDI_EventInfoType wdiEventData;
3207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3208
3209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003211 ------------------------------------------------------------------------*/
3212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3213 {
3214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3215 "WDI API call before module is initialized - Fail request");
3216
Jeff Johnsone7245742012-09-05 17:12:55 -07003217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 }
3219
3220 /*------------------------------------------------------------------------
3221 Fill in Event data and post to the Main FSM
3222 ------------------------------------------------------------------------*/
3223 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003224 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3225 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3226 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003227 wdiEventData.pUserData = pUserData;
3228
3229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3230
3231}/*WDI_SetSTABcastKeyReq*/
3232
3233/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 MAC wants to uninstall a STA Bcast key from HW. Upon the
3236 call of this API the WLAN DAL will pack and send a HAL
3237 Remove STA Bcast Key request message to the lower RIVA
3238 sub-system if DAL is in state STARTED.
3239
3240 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003241 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003242
3243 WDI_SetSTABcastKeyReq must have been called.
3244
Jeff Johnsone7245742012-09-05 17:12:55 -07003245 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003246 parameters as specified by the Device
3247 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003248
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3250 response of the remove STA Bcast key operation received
3251 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003252
Jeff Johnson295189b2012-06-20 16:38:30 -07003253 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003254 callback
3255
Jeff Johnson295189b2012-06-20 16:38:30 -07003256 @see WDI_SetSTABcastKeyReq
3257 @return Result of the function call
3258*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003259WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003260WDI_RemoveSTABcastKeyReq
3261(
3262 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3263 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3264 void* pUserData
3265)
3266{
3267 WDI_EventInfoType wdiEventData;
3268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3269
3270 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003271 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003272 ------------------------------------------------------------------------*/
3273 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3274 {
3275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3276 "WDI API call before module is initialized - Fail request");
3277
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003279 }
3280
3281 /*------------------------------------------------------------------------
3282 Fill in Event data and post to the Main FSM
3283 ------------------------------------------------------------------------*/
3284 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003285 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3286 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3287 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 wdiEventData.pUserData = pUserData;
3289
3290 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3291
3292}/*WDI_RemoveSTABcastKeyReq*/
3293
3294/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003295 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003296 MAC wants to set Max Tx Power to HW. Upon the
3297 call of this API the WLAN DAL will pack and send a HAL
3298 Remove STA Bcast Key request message to the lower RIVA
3299 sub-system if DAL is in state STARTED.
3300
3301 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003302 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003303
3304 WDI_SetSTABcastKeyReq must have been called.
3305
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 parameters as specified by the Device
3308 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003309
Jeff Johnson295189b2012-06-20 16:38:30 -07003310 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3311 response of the remove STA Bcast key operation received
3312 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003313
Jeff Johnson295189b2012-06-20 16:38:30 -07003314 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003315 callback
3316
Jeff Johnson295189b2012-06-20 16:38:30 -07003317 @see WDI_SetMaxTxPowerReq
3318 @return Result of the function call
3319*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003320WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003321WDI_SetMaxTxPowerReq
3322(
3323 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3324 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3325 void* pUserData
3326)
3327{
3328 WDI_EventInfoType wdiEventData;
3329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3330
3331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003332 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003333 ------------------------------------------------------------------------*/
3334 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3335 {
3336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3337 "WDI API call before module is initialized - Fail request");
3338
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003340 }
3341
3342 /*------------------------------------------------------------------------
3343 Fill in Event data and post to the Main FSM
3344 ------------------------------------------------------------------------*/
3345 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003346 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3347 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3348 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003349 wdiEventData.pUserData = pUserData;
3350
3351 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3352}
3353
schang86c22c42013-03-13 18:41:24 -07003354/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003355 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3356 MAC wants to set Max Tx Power to HW for specific band.
3357
3358 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3359
3360 wdiReqStatusCb: callback for passing back the
3361 response msg from the device
3362
3363 pUserData: user data will be passed back with the
3364 callback
3365
3366 @see WDI_SetMaxTxPowerPerBandReq
3367 @return Result of the function call
3368*/
3369WDI_Status
3370WDI_SetMaxTxPowerPerBandReq
3371(
3372 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3373 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3374 void* pUserData
3375)
3376{
3377 WDI_EventInfoType wdiEventData;
3378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3379
3380 /*------------------------------------------------------------------------
3381 Sanity Check
3382 ------------------------------------------------------------------------*/
3383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3384 {
3385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3386 "WDI API call before module is initialized - Fail request");
3387
3388 return WDI_STATUS_E_NOT_ALLOWED;
3389 }
3390
3391 /*------------------------------------------------------------------------
3392 Fill in Event data and post to the Main FSM
3393 ------------------------------------------------------------------------*/
3394 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3395 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3396 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3397 wdiEventData.pCBfnc = wdiReqStatusCb;
3398 wdiEventData.pUserData = pUserData;
3399
3400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3401}
3402
3403/**
schang86c22c42013-03-13 18:41:24 -07003404 @brief WDI_SetTxPowerReq will be called when the upper
3405 MAC wants to set Tx Power to HW.
3406 In state BUSY this request will be queued. Request won't
3407 be allowed in any other state.
3408
3409
3410 @param pwdiSetTxPowerParams: set TS Power parameters
3411 BSSID and target TX Power with dbm included
3412
3413 wdiReqStatusCb: callback for passing back the response
3414
3415 pUserData: user data will be passed back with the
3416 callback
3417
3418 @return Result of the function call
3419*/
3420WDI_Status
3421WDI_SetTxPowerReq
3422(
3423 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3424 WDA_SetTxPowerRspCb wdiReqStatusCb,
3425 void* pUserData
3426)
3427{
3428 WDI_EventInfoType wdiEventData;
3429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3430
3431 /*------------------------------------------------------------------------
3432 Sanity Check
3433 ------------------------------------------------------------------------*/
3434 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3435 {
3436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3437 "WDI API call before module is initialized - Fail request");
3438
3439 return WDI_STATUS_E_NOT_ALLOWED;
3440 }
3441
3442 /*------------------------------------------------------------------------
3443 Fill in Event data and post to the Main FSM
3444 ------------------------------------------------------------------------*/
3445 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3446 wdiEventData.pEventData = pwdiSetTxPowerParams;
3447 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3448 wdiEventData.pCBfnc = wdiReqStatusCb;
3449 wdiEventData.pUserData = pUserData;
3450
3451 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3452}
3453
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003454#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003455WDI_Status
3456WDI_TSMStatsReq
3457(
3458 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3459 WDI_TsmRspCb wdiReqStatusCb,
3460 void* pUserData
3461)
3462{
3463 WDI_EventInfoType wdiEventData;
3464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 /*------------------------------------------------------------------------
3466 Sanity Check
3467 ------------------------------------------------------------------------*/
3468 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3469 {
3470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3471 "WDI API call before module is initialized - Fail request");
3472
3473 return WDI_STATUS_E_NOT_ALLOWED;
3474 }
3475
3476 /*------------------------------------------------------------------------
3477 Fill in Event data and post to the Main FSM
3478 ------------------------------------------------------------------------*/
3479 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3480 wdiEventData.pEventData = pwdiTsmReqParams;
3481 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3482 wdiEventData.pCBfnc = wdiReqStatusCb;
3483 wdiEventData.pUserData = pUserData;
3484
3485 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3486
3487}
3488#endif
3489
3490/*========================================================================
3491
3492 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003493
Jeff Johnson295189b2012-06-20 16:38:30 -07003494==========================================================================*/
3495
3496/**
3497 @brief WDI_AddTSReq will be called when the upper MAC to inform
3498 the device of a successful add TSpec negotiation. HW
3499 needs to receive the TSpec Info from the UMAC in order
3500 to configure properly the QoS data traffic. Upon the
3501 call of this API the WLAN DAL will pack and send a HAL
3502 Add TS request message to the lower RIVA sub-system if
3503 DAL is in state STARTED.
3504
3505 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003506 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003507
3508 WDI_PostAssocReq must have been called.
3509
3510 @param wdiAddTsReqParams: the add TS parameters as specified by
3511 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003512
Jeff Johnson295189b2012-06-20 16:38:30 -07003513 wdiAddTsRspCb: callback for passing back the response of
3514 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003515
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003517 callback
3518
Jeff Johnson295189b2012-06-20 16:38:30 -07003519 @see WDI_PostAssocReq
3520 @return Result of the function call
3521*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003522WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003523WDI_AddTSReq
3524(
3525 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3526 WDI_AddTsRspCb wdiAddTsRspCb,
3527 void* pUserData
3528)
3529{
3530 WDI_EventInfoType wdiEventData;
3531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3532
3533 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003534 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 ------------------------------------------------------------------------*/
3536 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3537 {
3538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3539 "WDI API call before module is initialized - Fail request");
3540
Jeff Johnsone7245742012-09-05 17:12:55 -07003541 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 }
3543
3544 /*------------------------------------------------------------------------
3545 Fill in Event data and post to the Main FSM
3546 ------------------------------------------------------------------------*/
3547 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003548 wdiEventData.pEventData = pwdiAddTsReqParams;
3549 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3550 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003551 wdiEventData.pUserData = pUserData;
3552
3553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3554
3555}/*WDI_AddTSReq*/
3556
3557
3558
3559/**
3560 @brief WDI_DelTSReq will be called when the upper MAC has ended
3561 admission on a specific AC. This is to inform HW that
3562 QoS traffic parameters must be rest. Upon the call of
3563 this API the WLAN DAL will pack and send a HAL Del TS
3564 request message to the lower RIVA sub-system if DAL is
3565 in state STARTED.
3566
3567 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003569
3570 WDI_AddTSReq must have been called.
3571
3572 @param wdiDelTsReqParams: the del TS parameters as specified by
3573 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003574
Jeff Johnson295189b2012-06-20 16:38:30 -07003575 wdiDelTsRspCb: callback for passing back the response of
3576 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003577
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 callback
3580
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 @see WDI_AddTSReq
3582 @return Result of the function call
3583*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003585WDI_DelTSReq
3586(
3587 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3588 WDI_DelTsRspCb wdiDelTsRspCb,
3589 void* pUserData
3590)
3591{
3592 WDI_EventInfoType wdiEventData;
3593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3594
3595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 ------------------------------------------------------------------------*/
3598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3599 {
3600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3601 "WDI API call before module is initialized - Fail request");
3602
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 }
3605
3606 /*------------------------------------------------------------------------
3607 Fill in Event data and post to the Main FSM
3608 ------------------------------------------------------------------------*/
3609 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 wdiEventData.pEventData = pwdiDelTsReqParams;
3611 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3612 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003613 wdiEventData.pUserData = pUserData;
3614
3615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3616
3617}/*WDI_DelTSReq*/
3618
3619
3620
3621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003622 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003623 wishes to update the EDCA parameters used by HW for QoS
3624 data traffic. Upon the call of this API the WLAN DAL
3625 will pack and send a HAL Update EDCA Params request
3626 message to the lower RIVA sub-system if DAL is in state
3627 STARTED.
3628
3629 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003630 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003631
3632 WDI_PostAssocReq must have been called.
3633
Jeff Johnsone7245742012-09-05 17:12:55 -07003634 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003635 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003636
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 wdiUpdateEDCAParamsRspCb: callback for passing back the
3638 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003639
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003641 callback
3642
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 @see WDI_PostAssocReq
3644 @return Result of the function call
3645*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003646WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003647WDI_UpdateEDCAParams
3648(
3649 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3650 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3651 void* pUserData
3652)
3653{
3654 WDI_EventInfoType wdiEventData;
3655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3656
3657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003658 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003659 ------------------------------------------------------------------------*/
3660 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3661 {
3662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3663 "WDI API call before module is initialized - Fail request");
3664
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 }
3667
3668 /*------------------------------------------------------------------------
3669 Fill in Event data and post to the Main FSM
3670 ------------------------------------------------------------------------*/
3671 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3673 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3674 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003675 wdiEventData.pUserData = pUserData;
3676
3677 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3678
3679}/*WDI_UpdateEDCAParams*/
3680
3681
3682/**
3683 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3684 successfully a BA session and needs to notify the HW for
3685 the appropriate settings to take place. Upon the call of
3686 this API the WLAN DAL will pack and send a HAL Add BA
3687 request message to the lower RIVA sub-system if DAL is
3688 in state STARTED.
3689
3690 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003691 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003692
3693 WDI_PostAssocReq must have been called.
3694
3695 @param wdiAddBAReqParams: the add BA parameters as specified by
3696 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003697
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 wdiAddBARspCb: callback for passing back the response of
3699 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003700
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003702 callback
3703
Jeff Johnson295189b2012-06-20 16:38:30 -07003704 @see WDI_PostAssocReq
3705 @return Result of the function call
3706*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003707WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003708WDI_AddBASessionReq
3709(
3710 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3711 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3712 void* pUserData
3713)
3714{
3715 WDI_EventInfoType wdiEventData;
3716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3717
3718 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003719 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003720 ------------------------------------------------------------------------*/
3721 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3722 {
3723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3724 "WDI API call before module is initialized - Fail request");
3725
Jeff Johnsone7245742012-09-05 17:12:55 -07003726 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 }
3728
3729 /*------------------------------------------------------------------------
3730 Fill in Event data and post to the Main FSM
3731 ------------------------------------------------------------------------*/
3732 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003733 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3734 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3735 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003736 wdiEventData.pUserData = pUserData;
3737
3738 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3739
3740}/*WDI_AddBASessionReq*/
3741
3742/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003743 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 inform HW that it has deleted a previously created BA
3745 session. Upon the call of this API the WLAN DAL will
3746 pack and send a HAL Del BA request message to the lower
3747 RIVA sub-system if DAL is in state STARTED.
3748
3749 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003750 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003751
3752 WDI_AddBAReq must have been called.
3753
3754 @param wdiDelBAReqParams: the del BA parameters as specified by
3755 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003756
Jeff Johnson295189b2012-06-20 16:38:30 -07003757 wdiDelBARspCb: callback for passing back the response of
3758 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003759
Jeff Johnson295189b2012-06-20 16:38:30 -07003760 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003761 callback
3762
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 @see WDI_AddBAReq
3764 @return Result of the function call
3765*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003766WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003767WDI_DelBAReq
3768(
3769 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3770 WDI_DelBARspCb wdiDelBARspCb,
3771 void* pUserData
3772)
3773{
3774 WDI_EventInfoType wdiEventData;
3775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3776
3777 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003778 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003779 ------------------------------------------------------------------------*/
3780 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3781 {
3782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3783 "WDI API call before module is initialized - Fail request");
3784
Jeff Johnsone7245742012-09-05 17:12:55 -07003785 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003786 }
3787
3788 /*------------------------------------------------------------------------
3789 Fill in Event data and post to the Main FSM
3790 ------------------------------------------------------------------------*/
3791 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003792 wdiEventData.pEventData = pwdiDelBAReqParams;
3793 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3794 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003795 wdiEventData.pUserData = pUserData;
3796
3797 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3798
3799}/*WDI_DelBAReq*/
3800
Jeff Johnsone7245742012-09-05 17:12:55 -07003801/*========================================================================
3802
Jeff Johnson295189b2012-06-20 16:38:30 -07003803 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003804
Jeff Johnson295189b2012-06-20 16:38:30 -07003805==========================================================================*/
3806
3807/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003808 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 wants to set the power save related configurations of
3810 the WLAN Device. Upon the call of this API the WLAN DAL
3811 will pack and send a HAL Update CFG request message to
3812 the lower RIVA sub-system if DAL is in state STARTED.
3813
3814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003816
3817 WDI_Start must have been called.
3818
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003821
Jeff Johnson295189b2012-06-20 16:38:30 -07003822 wdiSetPwrSaveCfgCb: callback for passing back the
3823 response of the set power save cfg operation received
3824 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 callback
3828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 @return Result of the function call
3831*/
3832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003833WDI_SetPwrSaveCfgReq
3834(
3835 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3836 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3837 void* pUserData
3838)
3839{
3840 WDI_EventInfoType wdiEventData;
3841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3842
3843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 ------------------------------------------------------------------------*/
3846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3847 {
3848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3849 "WDI API call before module is initialized - Fail request");
3850
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 }
3853
3854 /*------------------------------------------------------------------------
3855 Fill in Event data and post to the Main FSM
3856 ------------------------------------------------------------------------*/
3857 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 wdiEventData.pEventData = pwdiPowerSaveCfg;
3859 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3860 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 wdiEventData.pUserData = pUserData;
3862
3863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3864
3865}/*WDI_SetPwrSaveCfgReq*/
3866
3867/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 request the device to get into IMPS power state. Upon
3870 the call of this API the WLAN DAL will send a HAL Enter
3871 IMPS request message to the lower RIVA sub-system if DAL
3872 is in state STARTED.
3873
3874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003876
Jeff Johnsone7245742012-09-05 17:12:55 -07003877
3878 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003879 response of the Enter IMPS operation received from the
3880 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 callback
3884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 @see WDI_Start
3886 @return Result of the function call
3887*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003889WDI_EnterImpsReq
3890(
Mihir Shetea4306052014-03-25 00:02:54 +05303891 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3893 void* pUserData
3894)
3895{
3896 WDI_EventInfoType wdiEventData;
3897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3898
3899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003901 ------------------------------------------------------------------------*/
3902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3903 {
3904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3905 "WDI API call before module is initialized - Fail request");
3906
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 }
3909
3910 /*------------------------------------------------------------------------
3911 Fill in Event data and post to the Main FSM
3912 ------------------------------------------------------------------------*/
3913 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303914 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3915 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003916 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003917 wdiEventData.pUserData = pUserData;
3918
3919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3920
3921}/*WDI_EnterImpsReq*/
3922
3923/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 request the device to get out of IMPS power state. Upon
3926 the call of this API the WLAN DAL will send a HAL Exit
3927 IMPS request message to the lower RIVA sub-system if DAL
3928 is in state STARTED.
3929
3930 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003932
Jeff Johnson295189b2012-06-20 16:38:30 -07003933
Jeff Johnsone7245742012-09-05 17:12:55 -07003934
3935 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003937
Jeff Johnson295189b2012-06-20 16:38:30 -07003938 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 callback
3940
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 @see WDI_Start
3942 @return Result of the function call
3943*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003944WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003945WDI_ExitImpsReq
3946(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303947 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3949 void* pUserData
3950)
3951{
3952 WDI_EventInfoType wdiEventData;
3953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3954
3955 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003956 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003957 ------------------------------------------------------------------------*/
3958 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3959 {
3960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3961 "WDI API call before module is initialized - Fail request");
3962
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 }
3965
3966 /*------------------------------------------------------------------------
3967 Fill in Event data and post to the Main FSM
3968 ------------------------------------------------------------------------*/
3969 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303970 wdiEventData.pEventData = pwdiExitImpsReqParams;
3971 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003972 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003973 wdiEventData.pUserData = pUserData;
3974
3975 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3976
3977}/*WDI_ExitImpsReq*/
3978
3979/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003980 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 request the device to get into BMPS power state. Upon
3982 the call of this API the WLAN DAL will pack and send a
3983 HAL Enter BMPS request message to the lower RIVA
3984 sub-system if DAL is in state STARTED.
3985
3986 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003988
3989 WDI_PostAssocReq must have been called.
3990
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003993
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 wdiEnterBmpsRspCb: callback for passing back the
3995 response of the Enter BMPS operation received from the
3996 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003997
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 callback
4000
Jeff Johnson295189b2012-06-20 16:38:30 -07004001 @see WDI_PostAssocReq
4002 @return Result of the function call
4003*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004004WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004005WDI_EnterBmpsReq
4006(
4007 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
4008 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
4009 void* pUserData
4010)
4011{
4012 WDI_EventInfoType wdiEventData;
4013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4014
4015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004016 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 ------------------------------------------------------------------------*/
4018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4019 {
4020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4021 "WDI API call before module is initialized - Fail request");
4022
Jeff Johnsone7245742012-09-05 17:12:55 -07004023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004024 }
4025
4026 /*------------------------------------------------------------------------
4027 Fill in Event data and post to the Main FSM
4028 ------------------------------------------------------------------------*/
4029 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004030 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
4031 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
4032 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004033 wdiEventData.pUserData = pUserData;
4034
4035 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4036
4037}/*WDI_EnterBmpsReq*/
4038
4039/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004040 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004041 request the device to get out of BMPS power state. Upon
4042 the call of this API the WLAN DAL will pack and send a
4043 HAL Exit BMPS request message to the lower RIVA
4044 sub-system if DAL is in state STARTED.
4045
4046 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004047 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004048
4049 WDI_PostAssocReq must have been called.
4050
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004053
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 wdiExitBmpsRspCb: callback for passing back the response
4055 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004056
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 callback
4059
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 @see WDI_PostAssocReq
4061 @return Result of the function call
4062*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004063WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004064WDI_ExitBmpsReq
4065(
4066 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4067 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4068 void* pUserData
4069)
4070{
4071 WDI_EventInfoType wdiEventData;
4072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4073
4074 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004075 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004076 ------------------------------------------------------------------------*/
4077 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4078 {
4079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4080 "WDI API call before module is initialized - Fail request");
4081
Jeff Johnsone7245742012-09-05 17:12:55 -07004082 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004083 }
4084
4085 /*------------------------------------------------------------------------
4086 Fill in Event data and post to the Main FSM
4087 ------------------------------------------------------------------------*/
4088 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004089 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4090 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4091 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004092 wdiEventData.pUserData = pUserData;
4093
4094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4095
4096}/*WDI_ExitBmpsReq*/
4097
4098/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004099 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004100 request the device to get into UAPSD power state. Upon
4101 the call of this API the WLAN DAL will pack and send a
4102 HAL Enter UAPSD request message to the lower RIVA
4103 sub-system if DAL is in state STARTED.
4104
4105 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004106 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004107
4108 WDI_PostAssocReq must have been called.
4109 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004110
4111 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004113
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 wdiEnterUapsdRspCb: callback for passing back the
4115 response of the Enter UAPSD operation received from the
4116 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004117
Jeff Johnson295189b2012-06-20 16:38:30 -07004118 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 callback
4120
Jeff Johnson295189b2012-06-20 16:38:30 -07004121 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4122 @return Result of the function call
4123*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004124WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004125WDI_EnterUapsdReq
4126(
4127 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4128 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4129 void* pUserData
4130)
4131{
4132 WDI_EventInfoType wdiEventData;
4133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4134
4135 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004136 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004137 ------------------------------------------------------------------------*/
4138 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4139 {
4140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4141 "WDI API call before module is initialized - Fail request");
4142
Jeff Johnsone7245742012-09-05 17:12:55 -07004143 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004144 }
4145
4146 /*------------------------------------------------------------------------
4147 Fill in Event data and post to the Main FSM
4148 ------------------------------------------------------------------------*/
4149 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004150 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4151 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4152 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004153 wdiEventData.pUserData = pUserData;
4154
4155 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4156
4157}/*WDI_EnterUapsdReq*/
4158
4159/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004161 request the device to get out of UAPSD power state. Upon
4162 the call of this API the WLAN DAL will send a HAL Exit
4163 UAPSD request message to the lower RIVA sub-system if
4164 DAL is in state STARTED.
4165
4166 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004167 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004168
4169 WDI_PostAssocReq must have been called.
4170
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 response of the Exit UAPSD operation received from the
4173 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004174
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 callback
4177
Jeff Johnson295189b2012-06-20 16:38:30 -07004178 @see WDI_PostAssocReq
4179 @return Result of the function call
4180*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004181WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004182WDI_ExitUapsdReq
4183(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004184 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4186 void* pUserData
4187)
4188{
4189 WDI_EventInfoType wdiEventData;
4190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4191
4192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004194 ------------------------------------------------------------------------*/
4195 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4196 {
4197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4198 "WDI API call before module is initialized - Fail request");
4199
Jeff Johnsone7245742012-09-05 17:12:55 -07004200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 }
4202
4203 /*------------------------------------------------------------------------
4204 Fill in Event data and post to the Main FSM
4205 ------------------------------------------------------------------------*/
4206 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004207 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4208 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004209 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004210 wdiEventData.pUserData = pUserData;
4211
4212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4213
4214}/*WDI_ExitUapsdReq*/
4215
4216/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004218 MAC wants to set the UAPSD related configurations
4219 of an associated STA (while acting as an AP) to the WLAN
4220 Device. Upon the call of this API the WLAN DAL will pack
4221 and send a HAL Update UAPSD params request message to
4222 the lower RIVA sub-system if DAL is in state STARTED.
4223
4224 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004225 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004226
4227 WDI_ConfigBSSReq must have been called.
4228
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004231
Jeff Johnson295189b2012-06-20 16:38:30 -07004232 wdiUpdateUapsdParamsCb: callback for passing back the
4233 response of the update UAPSD params operation received
4234 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004235
Jeff Johnson295189b2012-06-20 16:38:30 -07004236 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004237 callback
4238
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 @see WDI_ConfigBSSReq
4240 @return Result of the function call
4241*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004242WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004243WDI_UpdateUapsdParamsReq
4244(
4245 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4246 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4247 void* pUserData
4248)
4249{
4250 WDI_EventInfoType wdiEventData;
4251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4252
4253 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004254 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004255 ------------------------------------------------------------------------*/
4256 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4257 {
4258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4259 "WDI API call before module is initialized - Fail request");
4260
Jeff Johnsone7245742012-09-05 17:12:55 -07004261 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 }
4263
4264 /*------------------------------------------------------------------------
4265 Fill in Event data and post to the Main FSM
4266 ------------------------------------------------------------------------*/
4267 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004268 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004269 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004270 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004271 wdiEventData.pUserData = pUserData;
4272
4273 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4274
4275}/*WDI_UpdateUapsdParamsReq*/
4276
4277/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004278 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004279 MAC wants to set the UAPSD related configurations before
4280 requesting for enter UAPSD power state to the WLAN
4281 Device. Upon the call of this API the WLAN DAL will pack
4282 and send a HAL Set UAPSD params request message to
4283 the lower RIVA sub-system if DAL is in state STARTED.
4284
4285 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004286 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004287
4288 WDI_PostAssocReq must have been called.
4289
4290 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4291 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004292
Jeff Johnson295189b2012-06-20 16:38:30 -07004293 wdiSetUapsdAcParamsCb: callback for passing back the
4294 response of the set UAPSD params operation received from
4295 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004296
Jeff Johnson295189b2012-06-20 16:38:30 -07004297 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004298 callback
4299
Jeff Johnson295189b2012-06-20 16:38:30 -07004300 @see WDI_PostAssocReq
4301 @return Result of the function call
4302*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004303WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004304WDI_SetUapsdAcParamsReq
4305(
4306 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4307 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4308 void* pUserData
4309)
4310{
4311 WDI_EventInfoType wdiEventData;
4312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4313
4314 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004315 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 ------------------------------------------------------------------------*/
4317 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4318 {
4319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4320 "WDI API call before module is initialized - Fail request");
4321
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 }
4324
4325 /*------------------------------------------------------------------------
4326 Fill in Event data and post to the Main FSM
4327 ------------------------------------------------------------------------*/
4328 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004329 wdiEventData.pEventData = pwdiUapsdInfo;
4330 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4331 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004332 wdiEventData.pUserData = pUserData;
4333
4334 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4335
4336}/*WDI_SetUapsdAcParamsReq*/
4337
4338/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304339 @brief WDI_FWLoggingDXEdoneInd
4340
4341 FW Logging DXE done Indication from the upper layer will be sent
4342 down to HAL
4343
4344 @param WDI_FWLoggingDXEdoneIndInfoType
4345
4346 @see
4347
4348 @return Status of the request
4349*/
4350WDI_Status
4351WDI_FWLoggingDXEdoneInd
4352(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304353 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304354)
4355{
4356
4357 WDI_EventInfoType wdiEventData;
4358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4359
4360 /*------------------------------------------------------------------------
4361 Sanity Check
4362 ------------------------------------------------------------------------*/
4363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4364 {
4365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4366 "WDI API call before module is initialized - Fail request");
4367
4368 return WDI_STATUS_E_NOT_ALLOWED;
4369 }
4370
4371 /*------------------------------------------------------------------------
4372 Fill in Event data and post to the Main FSM
4373 ------------------------------------------------------------------------*/
4374 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304375 wdiEventData.pEventData = (void *)&data;
4376 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304377 wdiEventData.pCBfnc = NULL;
4378 wdiEventData.pUserData = NULL;
4379
4380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4381
4382}/*WDI_FWLoggingDXEdoneInd*/
4383
4384/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304385 @brief WDI_GetFrameLogReq will be called when the upper
4386 MAC wants to initialize frame logging. Upon the call of
4387 this API the WLAN DAL will pack and send a HAL
4388 Frame logging init request message to
4389 the lower RIVA sub-system.
4390
4391 In state BUSY this request will be queued. Request won't
4392 be allowed in any other state.
4393
4394
4395 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4396 as specified by the Device Interface
4397
4398 wdiGetFrameLogRspCb: callback for passing back the
4399 response of the frame logging init operation received
4400 from the device
4401
4402 pUserData: user data will be passed back with the
4403 callback
4404
4405 @return Result of the function call
4406*/
4407WDI_Status
4408WDI_GetFrameLogReq
4409(
4410 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4411 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4412 void* pUserData
4413)
4414{
4415 WDI_EventInfoType wdiEventData;
4416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4417
4418 /*------------------------------------------------------------------------
4419 Sanity Check
4420 ------------------------------------------------------------------------*/
4421 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4422 {
4423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4424 "WDI API call before module is initialized - Fail request");
4425
4426 return WDI_STATUS_E_NOT_ALLOWED;
4427 }
4428
4429 /*------------------------------------------------------------------------
4430 Fill in Event data and post to the Main FSM
4431 ------------------------------------------------------------------------*/
4432 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4433 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4434 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4435 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4436 wdiEventData.pUserData = pUserData;
4437
4438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4439}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304440
4441
4442/**
4443 @brief WDI_FatalEventLogsReq will be called when the upper
4444 MAC wants to send the flush command. Upon the call of
4445 this API the WLAN DAL will pack and send a HAL
4446 Fatal Event Req message to the lower RIVA sub-system.
4447
4448 In state BUSY this request will be queued. Request won't
4449 be allowed in any other state.
4450
4451
4452 @param pwdiFlushLogsReqInfo: the Flush Logs params
4453 as specified by the Device Interface
4454
4455 wdiFlushLogsRspCb: callback for passing back the
4456 response of the Flush Logs operation received
4457 from the device
4458
4459 pUserData: user data will be passed back with the
4460 callback
4461
4462 @return Result of the function call
4463*/
4464
4465WDI_Status
4466WDI_FatalEventLogsReq
4467(
4468 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4469 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4470 void* pUserData
4471)
4472{
4473 WDI_EventInfoType wdiEventData;
4474
4475 /*------------------------------------------------------------------------
4476 Sanity Check
4477 ------------------------------------------------------------------------*/
4478 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4479 {
4480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4481 "WDI API call before module is initialized - Fail request");
4482
4483 return WDI_STATUS_E_NOT_ALLOWED;
4484 }
4485
4486 /*------------------------------------------------------------------------
4487 Fill in Event data and post to the Main FSM
4488 ------------------------------------------------------------------------*/
4489 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4490 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4491 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4492 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4493 wdiEventData.pUserData = pUserData;
4494
4495 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4496
4497}
4498
4499
Siddharth Bhal64246172015-02-27 01:04:37 +05304500/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304501 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304502 MAC wants to initialize frame logging. Upon the call of
4503 this API the WLAN DAL will pack and send a HAL
4504 Frame logging init request message to
4505 the lower RIVA sub-system.
4506
4507 In state BUSY this request will be queued. Request won't
4508 be allowed in any other state.
4509
4510
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304511 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304512 as specified by the Device Interface
4513
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304514 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304515 response of the frame logging init operation received
4516 from the device
4517
4518 pUserData: user data will be passed back with the
4519 callback
4520
4521 @return Result of the function call
4522*/
4523WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304524WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304525(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304526 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4527 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304528 void* pUserData
4529)
4530{
4531 WDI_EventInfoType wdiEventData;
4532
4533 /*------------------------------------------------------------------------
4534 Sanity Check
4535 ------------------------------------------------------------------------*/
4536 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4537 {
4538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4539 "WDI API call before module is initialized - Fail request");
4540
4541 return WDI_STATUS_E_NOT_ALLOWED;
4542 }
4543
4544 /*------------------------------------------------------------------------
4545 Fill in Event data and post to the Main FSM
4546 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304547 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4548 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4549 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4550 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304551 wdiEventData.pUserData = pUserData;
4552
4553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4554}
4555
c_manjeecfd1efb2015-09-25 19:32:34 +05304556
4557/**
4558 @brief WDI_FwrMemDumpReq will be called when the upper
4559 MAC wants to get fwr mem dump. Upon the call of
4560 this API the WLAN DAL will pack and send a HAL
4561 Frame logging init request message to
4562 the lower RIVA sub-system.
4563
4564 In state BUSY this request will be queued. Request won't
4565 be allowed in any other state.
4566
4567
4568 @param pWdiFwrMemDumpReq: the fwr mem dump req params
4569 as specified by the Device Interface
4570
4571 wdiFWLoggingInitReqCb: callback for passing back the
4572 response of the frame logging init operation received
4573 from the device
4574
4575 pUserData: user data will be passed back with the
4576 callback
4577
4578 @return Result of the function call
4579*/
4580
4581WDI_Status
4582WDI_FwrMemDumpReq
4583
4584(
4585 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
4586 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
4587 void* pUserData
4588)
4589{
4590 WDI_EventInfoType wdiEventData;
4591
4592 /*------------------------------------------------------------------------
4593 Sanity Check
4594 ------------------------------------------------------------------------*/
4595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4596 {
4597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4598 "WDI API call before module is initialized - Fail request");
4599
4600 return WDI_STATUS_E_NOT_ALLOWED;
4601 }
4602
4603 /*------------------------------------------------------------------------
4604 Fill in Event data and post to the Main FSM
4605 ------------------------------------------------------------------------*/
4606 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
4607 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
4608 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
4609 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
4610 wdiEventData.pUserData = pUserData;
4611
4612 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4613}
4614
4615
4616
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304617/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05304618 @brief WDI_StartRssiMonitorReq will be called when the upper
4619 MAC wants to initialize Rssi Monitor on a bssid.
4620 Upon the call of this API the WLAN DAL will pack and
4621 send a HAL Rssi Monitor init request message to
4622 the lower RIVA sub-system.
4623
4624 In state BUSY this request will be queued. Request won't
4625 be allowed in any other state.
4626
4627
4628 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4629 as specified by the Device Interface
4630
4631 wdiRssiMonitorStartRspCb: callback for passing back the
4632 response of the rssi monitor operation received
4633 from the device
4634
4635 pUserData: user data will be passed back with the
4636 callback
4637
4638 @return Result of the function call
4639*/
4640WDI_Status
4641WDI_StartRssiMonitorReq
4642(
4643 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4644 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
4645 void* pUserData
4646)
4647{
4648 WDI_EventInfoType wdiEventData;
4649
4650 /*------------------------------------------------------------------------
4651 Sanity Check
4652 ------------------------------------------------------------------------*/
4653 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4654 {
4655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4656 "WDI API call before module is initialized - Fail request");
4657
4658 return WDI_STATUS_E_NOT_ALLOWED;
4659 }
4660
4661 /*------------------------------------------------------------------------
4662 Fill in Event data and post to the Main FSM
4663 ------------------------------------------------------------------------*/
4664 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
4665 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4666 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4667 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
4668 wdiEventData.pUserData = pUserData;
4669
4670 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4671}
4672
4673/**
4674 @brief WDI_StopRssiMonitorReq will be called when the upper
4675 MAC wants to stop Rssi Monitor on a bssid.
4676 Upon the call of this API the WLAN DAL will pack and
4677 send a HAL Rssi Monitor stop request message to
4678 the lower RIVA sub-system.
4679
4680 In state BUSY this request will be queued. Request won't
4681 be allowed in any other state.
4682
4683
4684 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4685 as specified by the Device Interface
4686
4687 wdiRssiMonitorStopRspCb: callback for passing back the
4688 response of the rssi monitor operation received
4689 from the device
4690
4691 pUserData: user data will be passed back with the
4692 callback
4693
4694 @return Result of the function call
4695*/
4696WDI_Status
4697WDI_StopRssiMonitorReq
4698(
4699 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4700 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
4701 void* pUserData
4702)
4703{
4704 WDI_EventInfoType wdiEventData;
4705
4706 /*------------------------------------------------------------------------
4707 Sanity Check
4708 ------------------------------------------------------------------------*/
4709 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4710 {
4711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4712 "WDI API call before module is initialized - Fail request");
4713
4714 return WDI_STATUS_E_NOT_ALLOWED;
4715 }
4716
4717 /*------------------------------------------------------------------------
4718 Fill in Event data and post to the Main FSM
4719 ------------------------------------------------------------------------*/
4720 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
4721 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4722 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4723 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
4724 wdiEventData.pUserData = pUserData;
4725
4726 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4727}
4728
4729
4730/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 MAC wants to set/reset the RXP filters for received pkts
4733 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4734 and send a HAL configure RXP filter request message to
4735 the lower RIVA sub-system.
4736
4737 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004738 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004739
Jeff Johnsone7245742012-09-05 17:12:55 -07004740
4741 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004742 filter as specified by the Device
4743 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004744
Jeff Johnson295189b2012-06-20 16:38:30 -07004745 wdiConfigureRxpFilterCb: callback for passing back the
4746 response of the configure RXP filter operation received
4747 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004748
Jeff Johnson295189b2012-06-20 16:38:30 -07004749 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004750 callback
4751
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 @return Result of the function call
4753*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004754WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004755WDI_ConfigureRxpFilterReq
4756(
4757 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4758 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4759 void* pUserData
4760)
4761{
4762 WDI_EventInfoType wdiEventData;
4763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4764
4765 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 ------------------------------------------------------------------------*/
4768 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4769 {
4770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4771 "WDI API call before module is initialized - Fail request");
4772
Jeff Johnsone7245742012-09-05 17:12:55 -07004773 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 }
4775
4776 /*------------------------------------------------------------------------
4777 Fill in Event data and post to the Main FSM
4778 ------------------------------------------------------------------------*/
4779 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004780 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4781 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4782 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004783 wdiEventData.pUserData = pUserData;
4784
4785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4786}/*WDI_ConfigureRxpFilterReq*/
4787
4788/**
4789 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4790 wants to set the beacon filters while in power save.
4791 Upon the call of this API the WLAN DAL will pack and
4792 send a Beacon filter request message to the
4793 lower RIVA sub-system.
4794
4795 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004796 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004797
Jeff Johnsone7245742012-09-05 17:12:55 -07004798
4799 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 filter as specified by the Device
4801 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004802
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 wdiBeaconFilterCb: callback for passing back the
4804 response of the set beacon filter operation received
4805 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004806
Jeff Johnson295189b2012-06-20 16:38:30 -07004807 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004808 callback
4809
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 @return Result of the function call
4811*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004812WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004813WDI_SetBeaconFilterReq
4814(
4815 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4816 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4817 void* pUserData
4818)
4819{
4820 WDI_EventInfoType wdiEventData;
4821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4822
4823 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 ------------------------------------------------------------------------*/
4826 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4827 {
4828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4829 "WDI API call before module is initialized - Fail request");
4830
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 }
4833
4834 /*------------------------------------------------------------------------
4835 Fill in Event data and post to the Main FSM
4836 ------------------------------------------------------------------------*/
4837 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004839 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004840 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 wdiEventData.pUserData = pUserData;
4842
4843 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4844}/*WDI_SetBeaconFilterReq*/
4845
4846/**
4847 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4848 wants to remove the beacon filter for particular IE
4849 while in power save. Upon the call of this API the WLAN
4850 DAL will pack and send a remove Beacon filter request
4851 message to the lower RIVA sub-system.
4852
4853 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004854 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004855
Jeff Johnsone7245742012-09-05 17:12:55 -07004856
4857 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 filter as specified by the Device
4859 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004860
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 wdiBeaconFilterCb: callback for passing back the
4862 response of the remove beacon filter operation received
4863 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004864
Jeff Johnson295189b2012-06-20 16:38:30 -07004865 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004866 callback
4867
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 @return Result of the function call
4869*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004870WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004871WDI_RemBeaconFilterReq
4872(
4873 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4874 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4875 void* pUserData
4876)
4877{
4878 WDI_EventInfoType wdiEventData;
4879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4880
4881 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004882 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004883 ------------------------------------------------------------------------*/
4884 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4885 {
4886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4887 "WDI API call before module is initialized - Fail request");
4888
Jeff Johnsone7245742012-09-05 17:12:55 -07004889 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004890 }
4891
4892 /*------------------------------------------------------------------------
4893 Fill in Event data and post to the Main FSM
4894 ------------------------------------------------------------------------*/
4895 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004897 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004898 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004899 wdiEventData.pUserData = pUserData;
4900
4901 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4902}/*WDI_RemBeaconFilterReq*/
4903
4904/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004905 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004906 MAC wants to set the RSSI thresholds related
4907 configurations while in power save. Upon the call of
4908 this API the WLAN DAL will pack and send a HAL Set RSSI
4909 thresholds request message to the lower RIVA
4910 sub-system if DAL is in state STARTED.
4911
4912 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004913 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004914
4915 WDI_PostAssocReq must have been called.
4916
4917 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4918 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004919
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 wdiSetUapsdAcParamsCb: callback for passing back the
4921 response of the set UAPSD params operation received from
4922 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004923
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004925 callback
4926
Jeff Johnson295189b2012-06-20 16:38:30 -07004927 @see WDI_PostAssocReq
4928 @return Result of the function call
4929*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004930WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004931WDI_SetRSSIThresholdsReq
4932(
4933 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4934 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4935 void* pUserData
4936)
4937{
4938 WDI_EventInfoType wdiEventData;
4939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4940
4941 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004942 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004943 ------------------------------------------------------------------------*/
4944 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4945 {
4946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4947 "WDI API call before module is initialized - Fail request");
4948
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 }
4951
4952 /*------------------------------------------------------------------------
4953 Fill in Event data and post to the Main FSM
4954 ------------------------------------------------------------------------*/
4955 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004957 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004958 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 wdiEventData.pUserData = pUserData;
4960
4961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4962}/* WDI_SetRSSIThresholdsReq*/
4963
4964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004965 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004966 wants to set the filter to minimize unnecessary host
4967 wakeup due to broadcast traffic while in power save.
4968 Upon the call of this API the WLAN DAL will pack and
4969 send a HAL host offload request message to the
4970 lower RIVA sub-system if DAL is in state STARTED.
4971
4972 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004974
4975 WDI_PostAssocReq must have been called.
4976
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004979
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 wdiHostOffloadCb: callback for passing back the response
4981 of the host offload operation received from the
4982 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004983
Jeff Johnson295189b2012-06-20 16:38:30 -07004984 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004985 callback
4986
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 @see WDI_PostAssocReq
4988 @return Result of the function call
4989*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004990WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004991WDI_HostOffloadReq
4992(
4993 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4994 WDI_HostOffloadCb wdiHostOffloadCb,
4995 void* pUserData
4996)
4997{
4998 WDI_EventInfoType wdiEventData;
4999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5000
5001 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005002 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 ------------------------------------------------------------------------*/
5004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5005 {
5006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5007 "WDI API call before module is initialized - Fail request");
5008
Jeff Johnsone7245742012-09-05 17:12:55 -07005009 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005010 }
5011
5012 /*------------------------------------------------------------------------
5013 Fill in Event data and post to the Main FSM
5014 ------------------------------------------------------------------------*/
5015 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005016 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005017 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 wdiEventData.pUserData = pUserData;
5020
5021 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5022}/*WDI_HostOffloadReq*/
5023
5024/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 @brief WDI_KeepAliveReq will be called when the upper MAC
5026 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 and minimize unnecessary host wakeups due to while in power save.
5028 Upon the call of this API the WLAN DAL will pack and
5029 send a HAL Keep Alive request message to the
5030 lower RIVA sub-system if DAL is in state STARTED.
5031
5032 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005033 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005034
5035 WDI_PostAssocReq must have been called.
5036
Jeff Johnsone7245742012-09-05 17:12:55 -07005037 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005039
Jeff Johnson295189b2012-06-20 16:38:30 -07005040 wdiKeepAliveCb: callback for passing back the response
5041 of the Keep Alive operation received from the
5042 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005043
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 callback
5046
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 @see WDI_PostAssocReq
5048 @return Result of the function call
5049*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005050WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005051WDI_KeepAliveReq
5052(
5053 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
5054 WDI_KeepAliveCb wdiKeepAliveCb,
5055 void* pUserData
5056)
5057{
5058 WDI_EventInfoType wdiEventData;
5059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5060
5061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005062 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 ------------------------------------------------------------------------*/
5064 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5065 {
5066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5067 "WDI_KeepAliveReq: WDI API call before module "
5068 "is initialized - Fail request");
5069
Jeff Johnsone7245742012-09-05 17:12:55 -07005070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 }
5072
5073 /*------------------------------------------------------------------------
5074 Fill in Event data and post to the Main FSM
5075 ------------------------------------------------------------------------*/
5076 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 wdiEventData.pEventData = pwdiKeepAliveParams;
5078 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5079 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005080 wdiEventData.pUserData = pUserData;
5081
5082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5083}/*WDI_KeepAliveReq*/
5084
5085/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 wants to set the Wowl Bcast ptrn to minimize unnecessary
5088 host wakeup due to broadcast traffic while in power
5089 save. Upon the call of this API the WLAN DAL will pack
5090 and send a HAL Wowl Bcast ptrn request message to the
5091 lower RIVA sub-system if DAL is in state STARTED.
5092
5093 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005095
5096 WDI_PostAssocReq must have been called.
5097
Jeff Johnsone7245742012-09-05 17:12:55 -07005098 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005100
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 wdiWowlAddBcPtrnCb: callback for passing back the
5102 response of the add Wowl bcast ptrn operation received
5103 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005104
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005106 callback
5107
Jeff Johnson295189b2012-06-20 16:38:30 -07005108 @see WDI_PostAssocReq
5109 @return Result of the function call
5110*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005111WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005112WDI_WowlAddBcPtrnReq
5113(
5114 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5115 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5116 void* pUserData
5117)
5118{
5119 WDI_EventInfoType wdiEventData;
5120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5121
5122 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005123 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005124 ------------------------------------------------------------------------*/
5125 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5126 {
5127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5128 "WDI API call before module is initialized - Fail request");
5129
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 }
5132
5133 /*------------------------------------------------------------------------
5134 Fill in Event data and post to the Main FSM
5135 ------------------------------------------------------------------------*/
5136 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005138 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005139 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005140 wdiEventData.pUserData = pUserData;
5141
5142 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5143}/*WDI_WowlAddBcPtrnReq*/
5144
5145/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005146 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 wants to clear the Wowl Bcast ptrn. Upon the call of
5148 this API the WLAN DAL will pack and send a HAL delete
5149 Wowl Bcast ptrn request message to the lower RIVA
5150 sub-system if DAL is in state STARTED.
5151
5152 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005153 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005154
5155 WDI_WowlAddBcPtrnReq must have been called.
5156
Jeff Johnsone7245742012-09-05 17:12:55 -07005157 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005159
Jeff Johnson295189b2012-06-20 16:38:30 -07005160 wdiWowlDelBcPtrnCb: callback for passing back the
5161 response of the del Wowl bcast ptrn operation received
5162 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005163
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 callback
5166
Jeff Johnson295189b2012-06-20 16:38:30 -07005167 @see WDI_WowlAddBcPtrnReq
5168 @return Result of the function call
5169*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005170WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005171WDI_WowlDelBcPtrnReq
5172(
5173 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5174 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5175 void* pUserData
5176)
5177{
5178 WDI_EventInfoType wdiEventData;
5179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5180
5181 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005182 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 ------------------------------------------------------------------------*/
5184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5185 {
5186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5187 "WDI API call before module is initialized - Fail request");
5188
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 }
5191
5192 /*------------------------------------------------------------------------
5193 Fill in Event data and post to the Main FSM
5194 ------------------------------------------------------------------------*/
5195 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005197 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005199 wdiEventData.pUserData = pUserData;
5200
5201 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5202}/*WDI_WowlDelBcPtrnReq*/
5203
5204/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005205 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005206 wants to enter the Wowl state to minimize unnecessary
5207 host wakeup while in power save. Upon the call of this
5208 API the WLAN DAL will pack and send a HAL Wowl enter
5209 request message to the lower RIVA sub-system if DAL is
5210 in state STARTED.
5211
5212 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005213 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005214
5215 WDI_PostAssocReq must have been called.
5216
Jeff Johnsone7245742012-09-05 17:12:55 -07005217 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005219
Jeff Johnson295189b2012-06-20 16:38:30 -07005220 wdiWowlEnterReqCb: callback for passing back the
5221 response of the enter Wowl operation received from the
5222 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005223
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005225 callback
5226
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 @see WDI_PostAssocReq
5228 @return Result of the function call
5229*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005230WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005231WDI_WowlEnterReq
5232(
5233 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5234 WDI_WowlEnterReqCb wdiWowlEnterCb,
5235 void* pUserData
5236)
5237{
5238 WDI_EventInfoType wdiEventData;
5239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5240
5241 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005242 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005243 ------------------------------------------------------------------------*/
5244 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5245 {
5246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5247 "WDI API call before module is initialized - Fail request");
5248
Jeff Johnsone7245742012-09-05 17:12:55 -07005249 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005250 }
5251
5252 /*------------------------------------------------------------------------
5253 Fill in Event data and post to the Main FSM
5254 ------------------------------------------------------------------------*/
5255 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005257 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 wdiEventData.pUserData = pUserData;
5260
5261 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5262}/*WDI_WowlEnterReq*/
5263
5264/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 wants to exit the Wowl state. Upon the call of this API
5267 the WLAN DAL will pack and send a HAL Wowl exit request
5268 message to the lower RIVA sub-system if DAL is in state
5269 STARTED.
5270
5271 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005272 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005273
5274 WDI_WowlEnterReq must have been called.
5275
Jeff Johnsone7245742012-09-05 17:12:55 -07005276 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005278
Jeff Johnson295189b2012-06-20 16:38:30 -07005279 wdiWowlExitReqCb: callback for passing back the response
5280 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005281
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 callback
5284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 @see WDI_WowlEnterReq
5286 @return Result of the function call
5287*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005288WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005289WDI_WowlExitReq
5290(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005291 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 WDI_WowlExitReqCb wdiWowlExitCb,
5293 void* pUserData
5294)
5295{
5296 WDI_EventInfoType wdiEventData;
5297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5298
5299 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 ------------------------------------------------------------------------*/
5302 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5303 {
5304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5305 "WDI API call before module is initialized - Fail request");
5306
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 }
5309
5310 /*------------------------------------------------------------------------
5311 Fill in Event data and post to the Main FSM
5312 ------------------------------------------------------------------------*/
5313 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005314 wdiEventData.pEventData = pwdiWowlExitParams;
5315 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 wdiEventData.pUserData = pUserData;
5318
5319 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5320}/*WDI_WowlExitReq*/
5321
5322/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005323 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 the upper MAC wants to dynamically adjusts the listen
5325 interval based on the WLAN/MSM activity. Upon the call
5326 of this API the WLAN DAL will pack and send a HAL
5327 configure Apps Cpu Wakeup State request message to the
5328 lower RIVA sub-system.
5329
5330 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005331 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005332
Jeff Johnsone7245742012-09-05 17:12:55 -07005333
5334 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005335 Apps Cpu Wakeup State as specified by the
5336 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005337
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5339 back the response of the configure Apps Cpu Wakeup State
5340 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005341
Jeff Johnson295189b2012-06-20 16:38:30 -07005342 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005343 callback
5344
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 @return Result of the function call
5346*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005347WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005348WDI_ConfigureAppsCpuWakeupStateReq
5349(
5350 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5351 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5352 void* pUserData
5353)
5354{
5355 WDI_EventInfoType wdiEventData;
5356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5357
5358 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005360 ------------------------------------------------------------------------*/
5361 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5362 {
5363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5364 "WDI API call before module is initialized - Fail request");
5365
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 }
5368
5369 /*------------------------------------------------------------------------
5370 Fill in Event data and post to the Main FSM
5371 ------------------------------------------------------------------------*/
5372 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005373 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5374 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5375 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 wdiEventData.pUserData = pUserData;
5377
5378 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5379}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5380/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005381 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005382 to to perform a flush operation on a given AC. Upon the
5383 call of this API the WLAN DAL will pack and send a HAL
5384 Flush AC request message to the lower RIVA sub-system if
5385 DAL is in state STARTED.
5386
5387 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005388 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005389
5390 WDI_AddBAReq must have been called.
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005394
Jeff Johnson295189b2012-06-20 16:38:30 -07005395 wdiFlushAcRspCb: callback for passing back the response
5396 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005397
Jeff Johnson295189b2012-06-20 16:38:30 -07005398 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005399 callback
5400
Jeff Johnson295189b2012-06-20 16:38:30 -07005401 @see WDI_AddBAReq
5402 @return Result of the function call
5403*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005405WDI_FlushAcReq
5406(
5407 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5408 WDI_FlushAcRspCb wdiFlushAcRspCb,
5409 void* pUserData
5410)
5411{
5412 WDI_EventInfoType wdiEventData;
5413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5414
5415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005417 ------------------------------------------------------------------------*/
5418 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5419 {
5420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5421 "WDI API call before module is initialized - Fail request");
5422
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 }
5425
5426 /*------------------------------------------------------------------------
5427 Fill in Event data and post to the Main FSM
5428 ------------------------------------------------------------------------*/
5429 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 wdiEventData.pEventData = pwdiFlushAcReqParams;
5431 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5432 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005433 wdiEventData.pUserData = pUserData;
5434
5435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5436
5437}/*WDI_FlushAcReq*/
5438
5439/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005440 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005441 wants to notify the lower mac on a BT AMP event. This is
5442 to inform BTC-SLM that some BT AMP event occurred. Upon
5443 the call of this API the WLAN DAL will pack and send a
5444 HAL BT AMP event request message to the lower RIVA
5445 sub-system if DAL is in state STARTED.
5446
5447 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005449
Jeff Johnsone7245742012-09-05 17:12:55 -07005450
5451 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005452 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005453
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 wdiBtAmpEventRspCb: callback for passing back the
5455 response of the BT AMP event operation received from the
5456 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005457
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 callback
5460
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 @return Result of the function call
5462*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005463WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005464WDI_BtAmpEventReq
5465(
5466 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5467 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5468 void* pUserData
5469)
5470{
5471 WDI_EventInfoType wdiEventData;
5472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5473
5474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005475 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005476 ------------------------------------------------------------------------*/
5477 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5478 {
5479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5480 "WDI API call before module is initialized - Fail request");
5481
Jeff Johnsone7245742012-09-05 17:12:55 -07005482 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005483 }
5484
5485 /*------------------------------------------------------------------------
5486 Fill in Event data and post to the Main FSM
5487 ------------------------------------------------------------------------*/
5488 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005489 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5490 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5491 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005492 wdiEventData.pUserData = pUserData;
5493
5494 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5495
5496}/*WDI_BtAmpEventReq*/
5497
Jeff Johnsone7245742012-09-05 17:12:55 -07005498#ifdef FEATURE_OEM_DATA_SUPPORT
5499/**
5500 @brief WDI_Start Oem Data Req will be called when the upper MAC
5501 wants to notify the lower mac on a oem data Req event.Upon
5502 the call of this API the WLAN DAL will pack and send a
5503 HAL OEM Data Req event request message to the lower RIVA
5504 sub-system if DAL is in state STARTED.
5505
5506 In state BUSY this request will be queued. Request won't
5507 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005508
5509
Jeff Johnsone7245742012-09-05 17:12:55 -07005510
5511 @param pwdiOemDataReqParams: the Oem Data Req as
5512 specified by the Device Interface
5513
5514 wdiStartOemDataRspCb: callback for passing back the
5515 response of the Oem Data Req received from the
5516 device
5517
5518 pUserData: user data will be passed back with the
5519 callback
5520
5521 @return Result of the function call
5522*/
5523WDI_Status
5524WDI_StartOemDataReq
5525(
5526 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5527 WDI_oemDataRspCb wdiOemDataRspCb,
5528 void* pUserData
5529)
5530{
5531 WDI_EventInfoType wdiEventData;
5532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5533
5534 /*------------------------------------------------------------------------
5535 Sanity Check
5536 ------------------------------------------------------------------------*/
5537 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5538 {
5539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5540 "WDI API call before module is initialized - Fail request");
5541
5542 return WDI_STATUS_E_NOT_ALLOWED;
5543 }
5544
5545 /*------------------------------------------------------------------------
5546 Fill in Event data and post to the Main FSM
5547 ------------------------------------------------------------------------*/
5548 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5549 wdiEventData.pEventData = pwdiOemDataReqParams;
5550 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5551 wdiEventData.pCBfnc = wdiOemDataRspCb;
5552 wdiEventData.pUserData = pUserData;
5553
5554 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5555
5556
5557}
5558
5559#endif
5560
5561
5562/*========================================================================
5563
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005565
Jeff Johnson295189b2012-06-20 16:38:30 -07005566==========================================================================*/
5567/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005568 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005569 the WLAN HW to change the current channel of operation.
5570 Upon the call of this API the WLAN DAL will pack and
5571 send a HAL Start request message to the lower RIVA
5572 sub-system if DAL is in state STARTED.
5573
5574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005576
5577 WDI_Start must have been called.
5578
Jeff Johnsone7245742012-09-05 17:12:55 -07005579 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005580 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005581
Jeff Johnson295189b2012-06-20 16:38:30 -07005582 wdiSwitchChRspCb: callback for passing back the response
5583 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005584
Jeff Johnson295189b2012-06-20 16:38:30 -07005585 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005586 callback
5587
Jeff Johnson295189b2012-06-20 16:38:30 -07005588 @see WDI_Start
5589 @return Result of the function call
5590*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005592WDI_SwitchChReq
5593(
5594 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5595 WDI_SwitchChRspCb wdiSwitchChRspCb,
5596 void* pUserData
5597)
5598{
5599 WDI_EventInfoType wdiEventData;
5600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5601
5602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005604 ------------------------------------------------------------------------*/
5605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5606 {
5607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5608 "WDI API call before module is initialized - Fail request");
5609
Jeff Johnsone7245742012-09-05 17:12:55 -07005610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 }
5612
5613 /*------------------------------------------------------------------------
5614 Fill in Event data and post to the Main FSM
5615 ------------------------------------------------------------------------*/
5616 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005617 wdiEventData.pEventData = pwdiSwitchChReqParams;
5618 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5619 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005620 wdiEventData.pUserData = pUserData;
5621
5622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5623
5624}/*WDI_SwitchChReq*/
5625
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005626/**
5627 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5628 the WLAN HW to change the current channel of operation.
5629 Upon the call of this API the WLAN DAL will pack and
5630 send a HAL Start request message to the lower RIVA
5631 sub-system if DAL is in state STARTED.
5632 This request message also includes source of channel switch,
5633 like CSA,
5634
5635 In state BUSY this request will be queued. Request won't
5636 be allowed in any other state.
5637
5638 WDI_Start must have been called.
5639
5640 @param wdiSwitchChReqParams: the switch ch parameters as
5641 specified by the Device Interface
5642
5643 wdiSwitchChRspCb: callback for passing back the response
5644 of the switch ch operation received from the device
5645
5646 pUserData: user data will be passed back with the
5647 callback
5648
5649 @see WDI_Start
5650 @return Result of the function call
5651*/
5652WDI_Status
5653WDI_SwitchChReq_V1
5654(
5655 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5656 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5657 void* pUserData
5658)
5659{
5660 WDI_EventInfoType wdiEventData;
5661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5663 "WDI API call WDI_SwitchChReq_V1");
5664 /*------------------------------------------------------------------------
5665 Sanity Check
5666 ------------------------------------------------------------------------*/
5667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5668 {
5669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5670 "WDI API call before module is initialized - Fail request");
5671
5672 return WDI_STATUS_E_NOT_ALLOWED;
5673 }
5674
5675 /*------------------------------------------------------------------------
5676 Fill in Event data and post to the Main FSM
5677 ------------------------------------------------------------------------*/
5678 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5679 wdiEventData.pEventData = pwdiSwitchChReqParams;
5680 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5681 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5682 wdiEventData.pUserData = pUserData;
5683
5684 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5685
5686}/*WDI_SwitchChReq_V1*/
5687
Jeff Johnson295189b2012-06-20 16:38:30 -07005688
5689/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005690 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 wishes to add or update a STA in HW. Upon the call of
5692 this API the WLAN DAL will pack and send a HAL Start
5693 message request message to the lower RIVA sub-system if
5694 DAL is in state STARTED.
5695
5696 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005697 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005698
5699 WDI_Start must have been called.
5700
Jeff Johnsone7245742012-09-05 17:12:55 -07005701 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005702 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005703
Jeff Johnson295189b2012-06-20 16:38:30 -07005704 wdiConfigSTARspCb: callback for passing back the
5705 response of the config STA operation received from the
5706 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005707
Jeff Johnson295189b2012-06-20 16:38:30 -07005708 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005709 callback
5710
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 @see WDI_Start
5712 @return Result of the function call
5713*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005714WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005715WDI_ConfigSTAReq
5716(
5717 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5718 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5719 void* pUserData
5720)
5721{
5722 WDI_EventInfoType wdiEventData;
5723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5724
5725 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005726 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005727 ------------------------------------------------------------------------*/
5728 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5729 {
5730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5731 "WDI API call before module is initialized - Fail request");
5732
Jeff Johnsone7245742012-09-05 17:12:55 -07005733 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005734 }
5735
5736 /*------------------------------------------------------------------------
5737 Fill in Event data and post to the Main FSM
5738 ------------------------------------------------------------------------*/
5739 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005740 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5741 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5742 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005743 wdiEventData.pUserData = pUserData;
5744
5745 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5746
5747}/*WDI_ConfigSTAReq*/
5748
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005749 /**
5750 @brief WDI_UpdateChannelReq will be called when the upper MAC
5751 wants to update the channel list on change in country code.
5752
5753 In state BUSY this request will be queued. Request won't
5754 be allowed in any other state.
5755
5756 WDI_UpdateChannelReq must have been called.
5757
5758 @param wdiUpdateChannelReqParams: the updated channel parameters
5759 as specified by the Device Interface
5760
5761 wdiUpdateChannelRspCb: callback for passing back the
5762 response of the update channel operation received from
5763 the device
5764
5765 pUserData: user data will be passed back with the
5766 callback
5767
5768 @return Result of the function call
5769*/
5770WDI_Status
5771WDI_UpdateChannelReq
5772(
5773 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5774 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5775 void* pUserData
5776)
5777{
5778 WDI_EventInfoType wdiEventData = {{0}};
5779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5780
5781 /*------------------------------------------------------------------------
5782 Sanity Check
5783 ------------------------------------------------------------------------*/
5784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5785 {
5786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5787 "WDI API call before module is initialized - Fail request");
5788
5789 return WDI_STATUS_E_NOT_ALLOWED;
5790 }
5791
5792 /*------------------------------------------------------------------------
5793 Fill in Event data and post to the Main FSM
5794 ------------------------------------------------------------------------*/
5795 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5796 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5797 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5798 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5799 wdiEventData.pUserData = pUserData;
5800
5801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5802
5803}/*WDI_UpdateChannelReq*/
5804
Jeff Johnson295189b2012-06-20 16:38:30 -07005805/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005806 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 wants to change the state of an ongoing link. Upon the
5808 call of this API the WLAN DAL will pack and send a HAL
5809 Start message request message to the lower RIVA
5810 sub-system if DAL is in state STARTED.
5811
5812 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005814
5815 WDI_JoinStartReq must have been called.
5816
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005818 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005819
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 wdiSetLinkStateRspCb: callback for passing back the
5821 response of the set link state operation received from
5822 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005825 callback
5826
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 @see WDI_JoinStartReq
5828 @return Result of the function call
5829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005831WDI_SetLinkStateReq
5832(
5833 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5834 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5835 void* pUserData
5836)
5837{
5838 WDI_EventInfoType wdiEventData;
5839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5840
5841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 ------------------------------------------------------------------------*/
5844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5845 {
5846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5847 "WDI API call before module is initialized - Fail request");
5848
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 }
5851
5852 /*------------------------------------------------------------------------
5853 Fill in Event data and post to the Main FSM
5854 ------------------------------------------------------------------------*/
5855 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005856 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5857 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5858 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 wdiEventData.pUserData = pUserData;
5860
5861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5862
5863}/*WDI_SetLinkStateReq*/
5864
5865
5866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005867 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 to get statistics (MIB counters) from the device. Upon
5869 the call of this API the WLAN DAL will pack and send a
5870 HAL Start request message to the lower RIVA sub-system
5871 if DAL is in state STARTED.
5872
5873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005875
5876 WDI_Start must have been called.
5877
Jeff Johnsone7245742012-09-05 17:12:55 -07005878 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005879 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005880
Jeff Johnson295189b2012-06-20 16:38:30 -07005881 wdiGetStatsRspCb: callback for passing back the response
5882 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005883
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005885 callback
5886
Jeff Johnson295189b2012-06-20 16:38:30 -07005887 @see WDI_Start
5888 @return Result of the function call
5889*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005890WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005891WDI_GetStatsReq
5892(
5893 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5894 WDI_GetStatsRspCb wdiGetStatsRspCb,
5895 void* pUserData
5896)
5897{
5898 WDI_EventInfoType wdiEventData;
5899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5900
5901 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 ------------------------------------------------------------------------*/
5904 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5905 {
5906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5907 "WDI API call before module is initialized - Fail request");
5908
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005910 }
5911
5912 /*------------------------------------------------------------------------
5913 Fill in Event data and post to the Main FSM
5914 ------------------------------------------------------------------------*/
5915 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005916 wdiEventData.pEventData = pwdiGetStatsReqParams;
5917 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5918 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 wdiEventData.pUserData = pUserData;
5920
5921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5922
5923}/*WDI_GetStatsReq*/
5924
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005925#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005926/**
5927 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5928 to get roam rssi from the device. Upon
5929 the call of this API the WLAN DAL will pack and send a
5930 HAL Start request message to the lower RIVA sub-system
5931 if DAL is in state STARTED.
5932
5933 In state BUSY this request will be queued. Request won't
5934 be allowed in any other state.
5935
5936 WDI_Start must have been called.
5937
5938 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5939 specified by the Device Interface
5940
5941 wdiGetRoamRssiRspCb: callback for passing back the response
5942 of the get stats operation received from the device
5943
5944 pUserData: user data will be passed back with the
5945 callback
5946
5947 @see WDI_Start
5948 @return Result of the function call
5949*/
5950WDI_Status
5951WDI_GetRoamRssiReq
5952(
5953 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5954 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5955 void* pUserData
5956)
5957{
5958 WDI_EventInfoType wdiEventData;
5959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5960
5961 /*------------------------------------------------------------------------
5962 Sanity Check
5963 ------------------------------------------------------------------------*/
5964 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5965 {
5966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5967 "WDI API call before module is initialized - Fail request");
5968
5969 return WDI_STATUS_E_NOT_ALLOWED;
5970 }
5971 /*------------------------------------------------------------------------
5972 Fill in Event data and post to the Main FSM
5973 ------------------------------------------------------------------------*/
5974 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5975 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5976 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5977 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5978 wdiEventData.pUserData = pUserData;
5979
5980 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5981
5982}/*WDI_GetRoamRssiReq*/
5983#endif
5984
Jeff Johnson295189b2012-06-20 16:38:30 -07005985
5986/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005987 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005988 it wishes to change the configuration of the WLAN
5989 Device. Upon the call of this API the WLAN DAL will pack
5990 and send a HAL Update CFG request message to the lower
5991 RIVA sub-system if DAL is in state STARTED.
5992
5993 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005994 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005995
5996 WDI_Start must have been called.
5997
Jeff Johnsone7245742012-09-05 17:12:55 -07005998 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005999 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006000
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 wdiUpdateCfgsRspCb: callback for passing back the
6002 response of the update cfg operation received from the
6003 device
Jeff Johnsone7245742012-09-05 17:12:55 -07006004
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006006 callback
6007
Jeff Johnson295189b2012-06-20 16:38:30 -07006008 @see WDI_Start
6009 @return Result of the function call
6010*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006012WDI_UpdateCfgReq
6013(
6014 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
6015 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
6016 void* pUserData
6017)
6018{
6019 WDI_EventInfoType wdiEventData;
6020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6021
6022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006023 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006024 ------------------------------------------------------------------------*/
6025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6026 {
6027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6028 "WDI API call before module is initialized - Fail request");
6029
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 }
6032
6033 /*------------------------------------------------------------------------
6034 Fill in Event data and post to the Main FSM
6035 ------------------------------------------------------------------------*/
6036 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006037 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
6038 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
6039 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006040 wdiEventData.pUserData = pUserData;
6041
6042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6043
6044}/*WDI_UpdateCfgReq*/
6045
6046
6047
6048/**
6049 @brief WDI_AddBAReq will be called when the upper MAC has setup
6050 successfully a BA session and needs to notify the HW for
6051 the appropriate settings to take place. Upon the call of
6052 this API the WLAN DAL will pack and send a HAL Add BA
6053 request message to the lower RIVA sub-system if DAL is
6054 in state STARTED.
6055
6056 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006057 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006058
6059 WDI_PostAssocReq must have been called.
6060
6061 @param wdiAddBAReqParams: the add BA parameters as specified by
6062 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006063
Jeff Johnson295189b2012-06-20 16:38:30 -07006064 wdiAddBARspCb: callback for passing back the response of
6065 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006066
Jeff Johnson295189b2012-06-20 16:38:30 -07006067 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006068 callback
6069
Jeff Johnson295189b2012-06-20 16:38:30 -07006070 @see WDI_PostAssocReq
6071 @return Result of the function call
6072*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006073WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006074WDI_AddBAReq
6075(
6076 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6077 WDI_AddBARspCb wdiAddBARspCb,
6078 void* pUserData
6079)
6080{
6081 WDI_EventInfoType wdiEventData;
6082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6083
6084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006085 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006086 ------------------------------------------------------------------------*/
6087 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6088 {
6089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6090 "WDI API call before module is initialized - Fail request");
6091
Jeff Johnsone7245742012-09-05 17:12:55 -07006092 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006093 }
6094
6095 /*------------------------------------------------------------------------
6096 Fill in Event data and post to the Main FSM
6097 ------------------------------------------------------------------------*/
6098 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006099 wdiEventData.pEventData = pwdiAddBAReqParams;
6100 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6101 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006102 wdiEventData.pUserData = pUserData;
6103
6104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6105
6106}/*WDI_AddBAReq*/
6107
6108
6109/**
6110 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6111 successfully a BA session and needs to notify the HW for
6112 the appropriate settings to take place. Upon the call of
6113 this API the WLAN DAL will pack and send a HAL Add BA
6114 request message to the lower RIVA sub-system if DAL is
6115 in state STARTED.
6116
6117 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006118 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006119
6120 WDI_PostAssocReq must have been called.
6121
6122 @param wdiAddBAReqParams: the add BA parameters as specified by
6123 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006124
Jeff Johnson295189b2012-06-20 16:38:30 -07006125 wdiAddBARspCb: callback for passing back the response of
6126 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006127
Jeff Johnson295189b2012-06-20 16:38:30 -07006128 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006129 callback
6130
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 @see WDI_PostAssocReq
6132 @return Result of the function call
6133*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006134WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006135WDI_TriggerBAReq
6136(
6137 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
6138 WDI_TriggerBARspCb wdiTriggerBARspCb,
6139 void* pUserData
6140)
6141{
6142 WDI_EventInfoType wdiEventData;
6143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6144
6145 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006146 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006147 ------------------------------------------------------------------------*/
6148 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6149 {
6150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6151 "WDI API call before module is initialized - Fail request");
6152
Jeff Johnsone7245742012-09-05 17:12:55 -07006153 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006154 }
6155
6156 /*------------------------------------------------------------------------
6157 Fill in Event data and post to the Main FSM
6158 ------------------------------------------------------------------------*/
6159 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006160 wdiEventData.pEventData = pwdiTriggerBAReqParams;
6161 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
6162 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006163 wdiEventData.pUserData = pUserData;
6164
6165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6166
6167}/*WDI_AddBAReq*/
6168
6169/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006170 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006171 wishes to update any of the Beacon parameters used by HW.
6172 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6173 message to the lower RIVA sub-system if DAL is in state
6174 STARTED.
6175
6176 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006177 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006178
6179 WDI_PostAssocReq must have been called.
6180
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006182 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006183
Jeff Johnson295189b2012-06-20 16:38:30 -07006184 wdiUpdateBeaconParamsRspCb: callback for passing back the
6185 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006186
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 callback
6189
Jeff Johnson295189b2012-06-20 16:38:30 -07006190 @see WDI_PostAssocReq
6191 @return Result of the function call
6192*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006193WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006194WDI_UpdateBeaconParamsReq
6195(
6196 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6197 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6198 void* pUserData
6199)
6200{
6201 WDI_EventInfoType wdiEventData;
6202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6203
6204 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006205 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006206 ------------------------------------------------------------------------*/
6207 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6208 {
6209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6210 "WDI API call before module is initialized - Fail request");
6211
Jeff Johnsone7245742012-09-05 17:12:55 -07006212 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 }
6214
6215 /*------------------------------------------------------------------------
6216 Fill in Event data and post to the Main FSM
6217 ------------------------------------------------------------------------*/
6218 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006219 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6220 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6221 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006222 wdiEventData.pUserData = pUserData;
6223
6224 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6225
6226}/*WDI_UpdateBeaconParamsReq*/
6227
6228/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006229 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006230 wishes to update the Beacon template used by HW.
6231 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6232 message to the lower RIVA sub-system if DAL is in state
6233 STARTED.
6234
6235 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006236 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006237
6238 WDI_PostAssocReq must have been called.
6239
Jeff Johnsone7245742012-09-05 17:12:55 -07006240 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006241 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006242
Jeff Johnson295189b2012-06-20 16:38:30 -07006243 wdiSendBeaconParamsRspCb: callback for passing back the
6244 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006245
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006247 callback
6248
Jeff Johnson295189b2012-06-20 16:38:30 -07006249 @see WDI_PostAssocReq
6250 @return Result of the function call
6251*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006252WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006253WDI_SendBeaconParamsReq
6254(
6255 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6256 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6257 void* pUserData
6258)
6259{
6260 WDI_EventInfoType wdiEventData;
6261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6262
6263 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006264 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 ------------------------------------------------------------------------*/
6266 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6267 {
6268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6269 "WDI API call before module is initialized - Fail request");
6270
Jeff Johnsone7245742012-09-05 17:12:55 -07006271 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006272 }
6273
6274 /*------------------------------------------------------------------------
6275 Fill in Event data and post to the Main FSM
6276 ------------------------------------------------------------------------*/
6277 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006278 wdiEventData.pEventData = pwdiSendBeaconParams;
6279 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6280 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006281 wdiEventData.pUserData = pUserData;
6282
6283 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6284
6285}/*WDI_SendBeaconParamsReq*/
6286
6287/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006288 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006289 upper MAC wants to update the probe response template to
6290 be transmitted as Soft AP
6291 Upon the call of this API the WLAN DAL will
6292 pack and send the probe rsp template message to the
6293 lower RIVA sub-system if DAL is in state STARTED.
6294
6295 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006296 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006297
6298
Jeff Johnsone7245742012-09-05 17:12:55 -07006299 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006300 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006301
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 wdiSendBeaconParamsRspCb: callback for passing back the
6303 response of the Send Beacon Params operation received
6304 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006305
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006307 callback
6308
Jeff Johnson295189b2012-06-20 16:38:30 -07006309 @see WDI_AddBAReq
6310 @return Result of the function call
6311*/
6312
Jeff Johnsone7245742012-09-05 17:12:55 -07006313WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006314WDI_UpdateProbeRspTemplateReq
6315(
6316 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6317 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6318 void* pUserData
6319)
6320{
6321 WDI_EventInfoType wdiEventData;
6322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6323
6324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 ------------------------------------------------------------------------*/
6327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6328 {
6329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6330 "WDI API call before module is initialized - Fail request");
6331
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 }
6334
6335 /*------------------------------------------------------------------------
6336 Fill in Event data and post to the Main FSM
6337 ------------------------------------------------------------------------*/
6338 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006339 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6340 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6341 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006342 wdiEventData.pUserData = pUserData;
6343
6344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6345
6346}/*WDI_UpdateProbeRspTemplateReq*/
6347
6348/**
6349 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6350 to the NV memory.
6351
6352
6353 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6354 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006355
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 wdiNvDownloadRspCb: callback for passing back the response of
6357 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006358
Jeff Johnson295189b2012-06-20 16:38:30 -07006359 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006360 callback
6361
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 @see WDI_PostAssocReq
6363 @return Result of the function call
6364*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006365WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006366WDI_NvDownloadReq
6367(
6368 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6369 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6370 void* pUserData
6371)
6372{
6373 WDI_EventInfoType wdiEventData;
6374
6375 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006376 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006377 ------------------------------------------------------------------------*/
6378 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6379 {
6380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6381 "WDI API call before module is initialized - Fail request");
6382
Jeff Johnsone7245742012-09-05 17:12:55 -07006383 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006384 }
6385
6386 /*------------------------------------------------------------------------
6387 Fill in Event data and post to the Main FSM
6388 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006389 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6390 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6391 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6392 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 wdiEventData.pUserData = pUserData;
6394
6395 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6396
6397}/*WDI_NVDownloadReq*/
6398
Jeff Johnson295189b2012-06-20 16:38:30 -07006399/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006400 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 upper MAC wants to send Notice of Absence
6402 Upon the call of this API the WLAN DAL will
6403 pack and send the probe rsp template message to the
6404 lower RIVA sub-system if DAL is in state STARTED.
6405
6406 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006407 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006408
6409
Jeff Johnsone7245742012-09-05 17:12:55 -07006410 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006411 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006412
Jeff Johnson295189b2012-06-20 16:38:30 -07006413 wdiSendBeaconParamsRspCb: callback for passing back the
6414 response of the Send Beacon Params operation received
6415 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006416
Jeff Johnson295189b2012-06-20 16:38:30 -07006417 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006418 callback
6419
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 @see WDI_AddBAReq
6421 @return Result of the function call
6422*/
6423WDI_Status
6424WDI_SetP2PGONOAReq
6425(
6426 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6427 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6428 void* pUserData
6429)
6430{
6431 WDI_EventInfoType wdiEventData;
6432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6433
6434 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006435 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006436 ------------------------------------------------------------------------*/
6437 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6438 {
6439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6440 "WDI API call before module is initialized - Fail request");
6441
Jeff Johnsone7245742012-09-05 17:12:55 -07006442 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006443 }
6444
6445 /*------------------------------------------------------------------------
6446 Fill in Event data and post to the Main FSM
6447 ------------------------------------------------------------------------*/
6448 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006449 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6450 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6451 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006452 wdiEventData.pUserData = pUserData;
6453
6454 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6455
6456}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006457
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306458#ifdef FEATURE_WLAN_TDLS
6459/**
6460 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6461 upper MAC wants to send TDLS Link Establish Request Parameters
6462 Upon the call of this API the WLAN DAL will
6463 pack and send the TDLS Link Establish Request message to the
6464 lower RIVA sub-system if DAL is in state STARTED.
6465
6466 In state BUSY this request will be queued. Request won't
6467 be allowed in any other state.
6468
6469
6470 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6471 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6472
6473 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6474 response of the TDLS Link Establish request received
6475 from the device
6476
6477 pUserData: user data will be passed back with the
6478 callback
6479
6480 @see
6481 @return Result of the function call
6482*/
6483WDI_Status
6484WDI_SetTDLSLinkEstablishReq
6485(
6486 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6487 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6488 void* pUserData
6489)
6490{
6491 WDI_EventInfoType wdiEventData;
6492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6493
6494 /*------------------------------------------------------------------------
6495 Sanity Check
6496 ------------------------------------------------------------------------*/
6497 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6498 {
6499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6500 "WDI API call before module is initialized - Fail request");
6501
6502 return WDI_STATUS_E_NOT_ALLOWED;
6503 }
6504
6505 /*------------------------------------------------------------------------
6506 Fill in Event data and post to the Main FSM
6507 ------------------------------------------------------------------------*/
6508 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6509 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6510 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6511 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6512 wdiEventData.pUserData = pUserData;
6513
6514 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6515
6516}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306517
6518//tdlsoffchan
6519/**
6520 @brief WDI_SetTDLSChanSwitchReq will be called when the
6521 upper MAC wants to send TDLS Chan Switch Request Parameters
6522 Upon the call of this API the WLAN DAL will
6523 pack and send the TDLS Link Establish Request message to the
6524 lower RIVA sub-system if DAL is in state STARTED.
6525
6526 In state BUSY this request will be queued. Request won't
6527 be allowed in any other state.
6528
6529
6530 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6531 for Link Establishment (Used for TDLS Off Channel ...)
6532
6533 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6534 response of the TDLS Chan Switch request received
6535 from the device
6536
6537 pUserData: user data will be passed back with the
6538 callback
6539
6540 @see
6541 @return Result of the function call
6542*/
6543WDI_Status
6544WDI_SetTDLSChanSwitchReq
6545(
6546 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6547 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6548 void* pUserData
6549)
6550{
6551 WDI_EventInfoType wdiEventData;
6552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6553
6554 /*------------------------------------------------------------------------
6555 Sanity Check
6556 ------------------------------------------------------------------------*/
6557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6558 {
6559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6560 "WDI API call before module is initialized - Fail request");
6561
6562 return WDI_STATUS_E_NOT_ALLOWED;
6563 }
6564
6565 /*------------------------------------------------------------------------
6566 Fill in Event data and post to the Main FSM
6567 ------------------------------------------------------------------------*/
6568 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6569 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6570 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6571 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6572 wdiEventData.pUserData = pUserData;
6573
6574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6575
6576}/*WDI_SetTDLSChanSwitchReq*/
6577
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306578#endif
6579
Jeff Johnson295189b2012-06-20 16:38:30 -07006580/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006581 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006582 UMAC wanted to add STA self while opening any new session
6583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006585
6586
Jeff Johnsone7245742012-09-05 17:12:55 -07006587 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006588 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006589
Jeff Johnson295189b2012-06-20 16:38:30 -07006590 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006591 callback
6592
6593 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006594 @return Result of the function call
6595*/
6596WDI_Status
6597WDI_AddSTASelfReq
6598(
6599 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6600 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6601 void* pUserData
6602)
6603{
6604 WDI_EventInfoType wdiEventData;
6605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6606
6607 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006608 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 ------------------------------------------------------------------------*/
6610 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6611 {
6612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6613 "WDI API call before module is initialized - Fail request");
6614
Jeff Johnsone7245742012-09-05 17:12:55 -07006615 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 }
6617
6618 /*------------------------------------------------------------------------
6619 Fill in Event data and post to the Main FSM
6620 ------------------------------------------------------------------------*/
6621 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006622 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6623 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6624 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006625 wdiEventData.pUserData = pUserData;
6626
6627 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6628
6629}/*WDI_AddSTASelfReq*/
6630
6631
Jeff Johnsone7245742012-09-05 17:12:55 -07006632#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006633/**
6634 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6635 the device of a successful add TSpec negotiation. HW
6636 needs to receive the TSpec Info from the UMAC in order
6637 to configure properly the QoS data traffic. Upon the
6638 call of this API the WLAN DAL will pack and send a HAL
6639 Add TS request message to the lower RIVA sub-system if
6640 DAL is in state STARTED.
6641
6642 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006643 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006644
6645 WDI_PostAssocReq must have been called.
6646
6647 @param wdiAddTsReqParams: the add TS parameters as specified by
6648 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006649
Jeff Johnson295189b2012-06-20 16:38:30 -07006650 wdiAddTsRspCb: callback for passing back the response of
6651 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006652
Jeff Johnson295189b2012-06-20 16:38:30 -07006653 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006654 callback
6655
Jeff Johnson295189b2012-06-20 16:38:30 -07006656 @see WDI_PostAssocReq
6657 @return Result of the function call
6658*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006659WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006660WDI_AggrAddTSReq
6661(
6662 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6663 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6664 void* pUserData
6665)
6666{
6667 WDI_EventInfoType wdiEventData;
6668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6669
6670 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006671 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006672 ------------------------------------------------------------------------*/
6673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6674 {
6675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6676 "WDI API call before module is initialized - Fail request");
6677
Jeff Johnsone7245742012-09-05 17:12:55 -07006678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 }
6680
6681 /*------------------------------------------------------------------------
6682 Fill in Event data and post to the Main FSM
6683 ------------------------------------------------------------------------*/
6684 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006685 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6686 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6687 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006688 wdiEventData.pUserData = pUserData;
6689
6690 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6691
6692}/*WDI_AggrAddTSReq*/
6693
6694#endif /* WLAN_FEATURE_VOWIFI_11R */
6695
Jeff Johnson295189b2012-06-20 16:38:30 -07006696/**
6697 @brief WDI_FTMCommandReq
6698 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006699
6700 @param ftmCommandReq: FTM Command Body
6701 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006703
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 @see
6705 @return Result of the function call
6706*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006707WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006708WDI_FTMCommandReq
6709(
6710 WDI_FTMCommandReqType *ftmCommandReq,
6711 WDI_FTMCommandRspCb ftmCommandRspCb,
6712 void *pUserData
6713)
6714{
6715 WDI_EventInfoType wdiEventData;
6716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6717
6718 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006719 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006720 ------------------------------------------------------------------------*/
6721 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6722 {
6723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6724 "WDI API call before module is initialized - Fail request");
6725
Jeff Johnsone7245742012-09-05 17:12:55 -07006726 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006727 }
6728
6729 /*------------------------------------------------------------------------
6730 Fill in Event data and post to the Main FSM
6731 ------------------------------------------------------------------------*/
6732 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6733 wdiEventData.pEventData = (void *)ftmCommandReq;
6734 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6735 wdiEventData.pCBfnc = ftmCommandRspCb;
6736 wdiEventData.pUserData = pUserData;
6737
6738 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6739}
Jeff Johnson295189b2012-06-20 16:38:30 -07006740/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006741 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006742
6743 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006744 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006745
6746
6747 @param pwdiResumeReqParams: as specified by
6748 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006749
Jeff Johnson295189b2012-06-20 16:38:30 -07006750 wdiResumeReqRspCb: callback for passing back the response of
6751 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006752
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006754 callback
6755
6756 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 @return Result of the function call
6758*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006759WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006760WDI_HostResumeReq
6761(
6762 WDI_ResumeParamsType* pwdiResumeReqParams,
6763 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6764 void* pUserData
6765)
6766{
6767 WDI_EventInfoType wdiEventData;
6768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6769
6770 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006771 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006772 ------------------------------------------------------------------------*/
6773 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6774 {
6775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6776 "WDI API call before module is initialized - Fail request");
6777
Jeff Johnsone7245742012-09-05 17:12:55 -07006778 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006779 }
6780
6781 /*------------------------------------------------------------------------
6782 Fill in Event data and post to the Main FSM
6783 ------------------------------------------------------------------------*/
6784 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006785 wdiEventData.pEventData = pwdiResumeReqParams;
6786 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6787 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006788 wdiEventData.pUserData = pUserData;
6789
6790 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6791
6792}/*WDI_HostResumeReq*/
6793
6794/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006795 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006796
6797 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006798 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006799
6800
6801 @param pwdiDelStaSelfReqParams: as specified by
6802 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006803
Jeff Johnson295189b2012-06-20 16:38:30 -07006804 wdiDelStaSelfRspCb: callback for passing back the response of
6805 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006806
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006808 callback
6809
Jeff Johnson295189b2012-06-20 16:38:30 -07006810 @see WDI_PostAssocReq
6811 @return Result of the function call
6812*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006813WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006814WDI_DelSTASelfReq
6815(
6816 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6817 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6818 void* pUserData
6819)
6820{
6821 WDI_EventInfoType wdiEventData;
6822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6823
6824 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006825 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006826 ------------------------------------------------------------------------*/
6827 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6828 {
6829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6830 "WDI API call before module is initialized - Fail request");
6831
Jeff Johnsone7245742012-09-05 17:12:55 -07006832 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006833 }
6834
6835 /*------------------------------------------------------------------------
6836 Fill in Event data and post to the Main FSM
6837 ------------------------------------------------------------------------*/
6838 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6840 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6841 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 wdiEventData.pUserData = pUserData;
6843
6844 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6845
6846}/*WDI_AggrAddTSReq*/
6847
6848/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006849 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6850 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 Upon the call of this API the WLAN DAL will pack
6852 and send a HAL Set Tx Per Tracking request message to the
6853 lower RIVA sub-system if DAL is in state STARTED.
6854
6855 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006856 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006857
Jeff Johnsone7245742012-09-05 17:12:55 -07006858 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006859 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006860
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 pwdiSetTxPerTrackingRspCb: callback for passing back the
6862 response of the set Tx PER Tracking configurations operation received
6863 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006864
Jeff Johnson295189b2012-06-20 16:38:30 -07006865 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006866 callback
6867
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 @return Result of the function call
6869*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006870WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006871WDI_SetTxPerTrackingReq
6872(
6873 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6874 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6875 void* pUserData
6876)
6877{
6878 WDI_EventInfoType wdiEventData;
6879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6880
6881 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006882 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 ------------------------------------------------------------------------*/
6884 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6885 {
6886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6887 "WDI API call before module is initialized - Fail request");
6888
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 }
6891
6892 /*------------------------------------------------------------------------
6893 Fill in Event data and post to the Main FSM
6894 ------------------------------------------------------------------------*/
6895 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006896 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006898 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006899 wdiEventData.pUserData = pUserData;
6900
6901 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6902
6903}/*WDI_SetTxPerTrackingReq*/
6904
6905/**
6906 @brief WDI_SetTmLevelReq
6907 If HW Thermal condition changed, driver should react based on new
6908 HW thermal condition.
6909
6910 @param pwdiSetTmLevelReq: New thermal condition information
6911
6912 pwdiSetTmLevelRspCb: callback
6913
6914 usrData: user data will be passed back with the
6915 callback
6916
6917 @return Result of the function call
6918*/
6919WDI_Status
6920WDI_SetTmLevelReq
6921(
6922 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6923 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6924 void *usrData
6925)
6926{
6927 WDI_EventInfoType wdiEventData;
6928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6929
6930 /*------------------------------------------------------------------------
6931 Sanity Check
6932 ------------------------------------------------------------------------*/
6933 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6934 {
6935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6936 "WDI API call before module is initialized - Fail request");
6937
6938 return WDI_STATUS_E_NOT_ALLOWED;
6939 }
6940
6941 /*------------------------------------------------------------------------
6942 Fill in Event data and post to the Main FSM
6943 ------------------------------------------------------------------------*/
6944 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6945 wdiEventData.pEventData = pwdiSetTmLevelReq;
6946 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6947 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6948 wdiEventData.pUserData = usrData;
6949
6950 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6951}
6952
6953/**
6954 @brief WDI_HostSuspendInd
6955
6956 Suspend Indication from the upper layer will be sent
6957 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006958
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006960
6961 @see
6962
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 @return Status of the request
6964*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006965WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006966WDI_HostSuspendInd
6967(
6968 WDI_SuspendParamsType* pwdiSuspendIndParams
6969)
6970{
6971
6972 WDI_EventInfoType wdiEventData;
6973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6974
6975 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006976 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006977 ------------------------------------------------------------------------*/
6978 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6979 {
6980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6981 "WDI API call before module is initialized - Fail request");
6982
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 }
6985
6986 /*------------------------------------------------------------------------
6987 Fill in Event data and post to the Main FSM
6988 ------------------------------------------------------------------------*/
6989 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 wdiEventData.pEventData = pwdiSuspendIndParams;
6991 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6992 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 wdiEventData.pUserData = NULL;
6994
6995 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6996
6997}/*WDI_HostSuspendInd*/
6998
6999/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007000 @brief WDI_TrafficStatsInd
7001 Traffic Stats from the upper layer will be sent
7002 down to HAL
7003
7004 @param WDI_TrafficStatsIndType
7005
7006 @see
7007
7008 @return Status of the request
7009*/
7010WDI_Status
7011WDI_TrafficStatsInd
7012(
7013 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
7014)
7015{
7016
7017 WDI_EventInfoType wdiEventData;
7018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7019
7020 /*------------------------------------------------------------------------
7021 Sanity Check
7022 ------------------------------------------------------------------------*/
7023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7024 {
7025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7026 "WDI API call before module is initialized - Fail request");
7027
7028 return WDI_STATUS_E_NOT_ALLOWED;
7029 }
7030
7031 /*------------------------------------------------------------------------
7032 Fill in Event data and post to the Main FSM
7033 ------------------------------------------------------------------------*/
7034 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
7035 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
7036 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
7037 wdiEventData.pCBfnc = NULL;
7038 wdiEventData.pUserData = NULL;
7039
7040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7041
7042}/*WDI_TrafficStatsInd*/
7043
Chet Lanctot186b5732013-03-18 10:26:30 -07007044#ifdef WLAN_FEATURE_11W
7045/**
7046 @brief WDI_ExcludeUnencryptedInd
7047 Register with HAL to receive/drop unencrypted frames
7048
7049 @param WDI_ExcludeUnencryptIndType
7050
7051 @see
7052
7053 @return Status of the request
7054*/
7055WDI_Status
7056WDI_ExcludeUnencryptedInd
7057(
7058 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7059)
7060{
7061
7062 WDI_EventInfoType wdiEventData;
7063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7064
7065 /*------------------------------------------------------------------------
7066 Sanity Check
7067 ------------------------------------------------------------------------*/
7068 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7069 {
7070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7071 "WDI API call before module is initialized - Fail request");
7072
7073 return WDI_STATUS_E_NOT_ALLOWED;
7074 }
7075
7076 /*------------------------------------------------------------------------
7077 Fill in Event data and post to the Main FSM
7078 ------------------------------------------------------------------------*/
7079 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7080 wdiEventData.pEventData = pWdiExcUnencParams;
7081 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7082 wdiEventData.pCBfnc = NULL;
7083 wdiEventData.pUserData = NULL;
7084
7085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7086
7087}/*WDI_TrafficStatsInd*/
7088#endif
7089
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007090/**
Yue Mab9c86f42013-08-14 15:59:08 -07007091 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7092
7093 @param addPeriodicTxPtrnParams: Add Pattern parameters
7094
7095 @see
7096
7097 @return Status of the request
7098*/
7099WDI_Status
7100WDI_AddPeriodicTxPtrnInd
7101(
7102 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7103)
7104{
7105 WDI_EventInfoType wdiEventData;
7106
7107 /*-------------------------------------------------------------------------
7108 Sanity Check
7109 ------------------------------------------------------------------------*/
7110 if (eWLAN_PAL_FALSE == gWDIInitialized)
7111 {
7112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7113 "WDI API call before module is initialized - Fail request!");
7114
7115 return WDI_STATUS_E_NOT_ALLOWED;
7116 }
7117
7118 /*-------------------------------------------------------------------------
7119 Fill in Event data and post to the Main FSM
7120 ------------------------------------------------------------------------*/
7121 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7122 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7123 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7124 wdiEventData.pCBfnc = NULL;
7125 wdiEventData.pUserData = NULL;
7126
7127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7128}
7129
7130/**
7131 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7132
7133 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7134
7135 @see
7136
7137 @return Status of the request
7138*/
7139WDI_Status
7140WDI_DelPeriodicTxPtrnInd
7141(
7142 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7143)
7144{
7145 WDI_EventInfoType wdiEventData;
7146
7147 /*-------------------------------------------------------------------------
7148 Sanity Check
7149 ------------------------------------------------------------------------*/
7150 if (eWLAN_PAL_FALSE == gWDIInitialized)
7151 {
7152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7153 "WDI API call before module is initialized - Fail request!");
7154
7155 return WDI_STATUS_E_NOT_ALLOWED;
7156 }
7157
7158 /*-------------------------------------------------------------------------
7159 Fill in Event data and post to the Main FSM
7160 ------------------------------------------------------------------------*/
7161 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7162 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7163 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7164 wdiEventData.pCBfnc = NULL;
7165 wdiEventData.pUserData = NULL;
7166
7167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7168}
7169
7170/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 @brief WDI_HALDumpCmdReq
7172 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007173
7174 @param halDumpCmdReqParams: Hal Dump Command Body
7175 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007176 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007177
Jeff Johnson295189b2012-06-20 16:38:30 -07007178 @see
7179 @return Result of the function call
7180*/
7181WDI_Status WDI_HALDumpCmdReq
7182(
7183 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7184 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7185 void *pUserData
7186)
7187{
7188 WDI_EventInfoType wdiEventData;
7189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7190
7191 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007192 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007193 ------------------------------------------------------------------------*/
7194 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7195 {
7196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7197 "WDI API call before module is initialized - Fail request");
7198
Jeff Johnsone7245742012-09-05 17:12:55 -07007199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 }
7201
7202 /*------------------------------------------------------------------------
7203 Fill in Event data and post to the Main FSM
7204 ------------------------------------------------------------------------*/
7205 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7206 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7207 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7208 wdiEventData.pCBfnc = halDumpCmdRspCb;
7209 wdiEventData.pUserData = pUserData;
7210
7211 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7212}
7213
Jeff Johnsone7245742012-09-05 17:12:55 -07007214/*============================================================================
7215
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007217
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 ============================================================================*/
7219
7220/**
7221 @brief Main FSM Start function for all states except BUSY
7222
Jeff Johnsone7245742012-09-05 17:12:55 -07007223
7224 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 wdiEV: event posted to the main DAL FSM
7226 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007227 structure
7228
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 @see
7230 @return Result of the function call
7231*/
7232WDI_Status
7233WDI_PostMainEvent
7234(
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 WDI_ControlBlockType* pWDICtx,
7236 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007237 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007238)
7239{
Jeff Johnsone7245742012-09-05 17:12:55 -07007240 WDI_Status wdiStatus;
7241 WDI_MainFuncType pfnWDIMainEvHdlr;
7242 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307243 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7245
7246 /*-------------------------------------------------------------------------
7247 Sanity check
7248 -------------------------------------------------------------------------*/
7249 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7250 ( wdiEV >= WDI_MAX_EVENT ))
7251 {
7252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7253 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7254 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007255 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007256 }
7257
7258 /*Access to the global state must be locked */
7259 wpalMutexAcquire(&pWDICtx->wptMutex);
7260
7261 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007262 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007263
7264 wdiOldState = pWDICtx->uGlobalState;
7265
7266 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7268 response comes from CCPU for the request sent by host:
7269 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 -07007270 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 -07007271 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007272 CCPU:
7273 don't change the state */
7274 if ( WDI_RESPONSE_EVENT != wdiEV)
7275 {
7276 /*Transition to BUSY State - the request is now being processed by the FSM,
7277 if the request fails we shall transition back to the old state, if not
7278 the request will manage its own state transition*/
7279 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7280 }
7281 /* If the state function associated with the EV is NULL it means that this
7282 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007283 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007284 {
7285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007286 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007287 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 }
7290 else
7291 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307292 if (!(failCnt & 0xF))
7293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007294 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307296 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007297 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 }
7299
7300 /* If a request handles itself well it will end up in a success or in a
7301 pending
7302 Success - means that the request was processed and the proper state
7303 transition already occurred or will occur when the resp is received
7304 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007305
Jeff Johnson295189b2012-06-20 16:38:30 -07007306 Pending - means the request could not be processed at this moment in time
7307 because the FSM was already busy so no state transition or dequeueing
7308 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007309
Jeff Johnson295189b2012-06-20 16:38:30 -07007310 Success for synchronous case means that the transition may occur and
7311 processing of pending requests may continue - so it should go through
7312 and restores the state and continue processing queued requests*/
7313 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7314 ( WDI_STATUS_PENDING != wdiStatus ))
7315 {
7316 if ( WDI_RESPONSE_EVENT != wdiEV)
7317 {
7318 /*The request has failed or could not be processed - transition back to
7319 the old state - check to see if anything was queued and try to execute
7320 The dequeue logic should post a message to a thread and return - no
7321 actual processing can occur */
7322 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7323 }
7324 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007325
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 }
7327
7328 /* we have completed processing the event */
7329 wpalMutexRelease(&pWDICtx->wptMutex);
7330
Jeff Johnsone7245742012-09-05 17:12:55 -07007331 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007332
7333}/*WDI_PostMainEvent*/
7334
7335
7336/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007337 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007338--------------------------------------------------------------------------*/
7339/**
7340 @brief Main FSM Start function for all states except BUSY
7341
Jeff Johnsone7245742012-09-05 17:12:55 -07007342
7343 @param pWDICtx: pointer to the WLAN DAL context
7344 pEventData: pointer to the event information structure
7345
Jeff Johnson295189b2012-06-20 16:38:30 -07007346 @see
7347 @return Result of the function call
7348*/
7349WDI_Status
7350WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007351(
Jeff Johnson295189b2012-06-20 16:38:30 -07007352 WDI_ControlBlockType* pWDICtx,
7353 WDI_EventInfoType* pEventData
7354)
7355{
7356
7357 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 ----------------------------------------------------------------------*/
7360 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7361 {
7362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007363 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 pWDICtx, pEventData);
7365 return WDI_STATUS_E_FAILURE;
7366 }
7367
7368 wpalMutexAcquire(&pWDICtx->wptMutex);
7369
7370 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 ----------------------------------------------------------------------*/
7373 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7374 {
7375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7376 "Control Transport not yet Open - queueing the request");
7377
7378 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007379 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007380
7381 wpalMutexRelease(&pWDICtx->wptMutex);
7382 return WDI_STATUS_PENDING;
7383 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007384
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 wpalMutexRelease(&pWDICtx->wptMutex);
7386
7387 /*Return Success*/
7388 return WDI_ProcessRequest( pWDICtx, pEventData );
7389
7390}/*WDI_MainStart*/
7391
7392/**
7393 @brief Main FSM Response function for state INIT
7394
Jeff Johnsone7245742012-09-05 17:12:55 -07007395
7396 @param pWDICtx: pointer to the WLAN DAL context
7397 pEventData: pointer to the event information structure
7398
Jeff Johnson295189b2012-06-20 16:38:30 -07007399 @see
7400 @return Result of the function call
7401*/
7402WDI_Status
7403WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007404(
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 WDI_ControlBlockType* pWDICtx,
7406 WDI_EventInfoType* pEventData
7407)
7408{
7409 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007410 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007412 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007413
7414 /*Return Success*/
7415 return WDI_STATUS_E_NOT_ALLOWED;
7416}/* WDI_MainRspInit */
7417
7418/**
7419 @brief Main FSM Close function for all states except BUSY
7420
Jeff Johnsone7245742012-09-05 17:12:55 -07007421
7422 @param pWDICtx: pointer to the WLAN DAL context
7423 pEventData: pointer to the event information structure
7424
Jeff Johnson295189b2012-06-20 16:38:30 -07007425 @see
7426 @return Result of the function call
7427*/
7428WDI_Status
7429WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007430(
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 WDI_ControlBlockType* pWDICtx,
7432 WDI_EventInfoType* pEventData
7433)
7434{
7435
7436 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007438 ----------------------------------------------------------------------*/
7439 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7440 {
7441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007442 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 pWDICtx, pEventData);
7444 return WDI_STATUS_E_FAILURE;
7445 }
7446
7447 /*Return Success*/
7448 return WDI_ProcessRequest( pWDICtx, pEventData );
7449
7450}/*WDI_MainClose*/
7451/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007453--------------------------------------------------------------------------*/
7454/**
7455 @brief Main FSM Start function for state STARTED
7456
Jeff Johnsone7245742012-09-05 17:12:55 -07007457
7458 @param pWDICtx: pointer to the WLAN DAL context
7459 pEventData: pointer to the event information structure
7460
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 @see
7462 @return Result of the function call
7463*/
7464WDI_Status
7465WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007466(
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 WDI_ControlBlockType* pWDICtx,
7468 WDI_EventInfoType* pEventData
7469)
7470{
7471 WDI_StartRspCb wdiStartRspCb = NULL;
7472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7473
7474 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007475 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 ----------------------------------------------------------------------*/
7477 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7478 {
7479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007480 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 pWDICtx, pEventData);
7482 return WDI_STATUS_E_FAILURE;
7483 }
7484
7485 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 ----------------------------------------------------------------------*/
7488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007489 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007490
7491 wpalMutexAcquire(&pWDICtx->wptMutex);
7492
7493 /*Transition back to started because the post function transitioned us to
7494 busy*/
7495 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7496
7497 /*Check to see if any request is pending*/
7498 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007499
Jeff Johnson295189b2012-06-20 16:38:30 -07007500 wpalMutexRelease(&pWDICtx->wptMutex);
7501
7502 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007503 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7504
Jeff Johnson295189b2012-06-20 16:38:30 -07007505 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307506 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007507
7508 /*Return Success*/
7509 return WDI_STATUS_SUCCESS;
7510
7511}/*WDI_MainStartStarted*/
7512
7513/**
7514 @brief Main FSM Stop function for state STARTED
7515
Jeff Johnsone7245742012-09-05 17:12:55 -07007516
7517 @param pWDICtx: pointer to the WLAN DAL context
7518 pEventData: pointer to the event information structure
7519
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 @see
7521 @return Result of the function call
7522*/
7523WDI_Status
7524WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007525(
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 WDI_ControlBlockType* pWDICtx,
7527 WDI_EventInfoType* pEventData
7528)
7529{
7530 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007531 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 ----------------------------------------------------------------------*/
7533 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7534 {
7535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007536 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007537 pWDICtx, pEventData);
7538 return WDI_STATUS_E_FAILURE;
7539 }
7540
7541 /*State at this point is BUSY - because we enter this state before posting
7542 an event to the FSM in order to prevent potential race conditions*/
7543
7544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7545 "Processing stop request in FSM");
7546
7547 /*Return Success*/
7548 return WDI_ProcessRequest( pWDICtx, pEventData );
7549
7550}/*WDI_MainStopStarted*/
7551/**
7552 @brief Main FSM Request function for state started
7553
Jeff Johnsone7245742012-09-05 17:12:55 -07007554
7555 @param pWDICtx: pointer to the WLAN DAL context
7556 pEventData: pointer to the event information structure
7557
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 @see
7559 @return Result of the function call
7560*/
7561WDI_Status
7562WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007563(
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 WDI_ControlBlockType* pWDICtx,
7565 WDI_EventInfoType* pEventData
7566)
7567{
7568
7569 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 ----------------------------------------------------------------------*/
7572 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7573 {
7574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007575 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 pWDICtx, pEventData);
7577 return WDI_STATUS_E_FAILURE;
7578 }
7579
7580 /*State at this point is BUSY - because we enter this state before posting
7581 an event to the FSM in order to prevent potential race conditions*/
7582
7583 /*Return Success*/
7584 return WDI_ProcessRequest( pWDICtx, pEventData );
7585
7586}/*WDI_MainReqStarted*/
7587
7588/**
7589 @brief Main FSM Response function for all states except INIT
7590
Jeff Johnsone7245742012-09-05 17:12:55 -07007591
7592 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007593 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007594
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 @see
7596 @return Result of the function call
7597*/
7598WDI_Status
7599WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007600(
Jeff Johnson295189b2012-06-20 16:38:30 -07007601 WDI_ControlBlockType* pWDICtx,
7602 WDI_EventInfoType* pEventData
7603)
7604{
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 wpt_boolean expectedResponse;
7607
7608 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 ----------------------------------------------------------------------*/
7611 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7612 {
7613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007614 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007615 pWDICtx, pEventData);
7616 return WDI_STATUS_E_FAILURE;
7617 }
7618
7619 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7620 {
7621 /* we received an expected response */
7622 expectedResponse = eWLAN_PAL_TRUE;
7623
7624 /*We expect that we will transition to started after this processing*/
7625 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7626
7627 /* we are no longer expecting a response */
7628 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7629 }
7630 else
7631 {
7632 /* we received an indication or unexpected response */
7633 expectedResponse = eWLAN_PAL_FALSE;
7634 /* for indications no need to update state from what it is right
7635 now, unless it explicitly does it in the indication handler (say
7636 for device failure ind) */
7637 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7638 }
7639
7640 /*Process the response and indication */
7641 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7642
7643 /*Lock the CB as we are about to do a state transition*/
7644 wpalMutexAcquire(&pWDICtx->wptMutex);
7645
7646 /*Transition to the expected state after the response processing
7647 - this should always be started state with the following exceptions:
7648 1. processing of a failed start response
7649 2. device failure detected while processing response
7650 3. stop response received*/
7651 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007652
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 /*Dequeue request that may have been queued while we were waiting for the
7654 response */
7655 if ( expectedResponse )
7656 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007657 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 }
7659
7660 wpalMutexRelease(&pWDICtx->wptMutex);
7661
7662 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007664
7665}/*WDI_MainRsp*/
7666
7667/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007669--------------------------------------------------------------------------*/
7670/**
7671 @brief Main FSM Stop function for state STOPPED
7672
Jeff Johnsone7245742012-09-05 17:12:55 -07007673
7674 @param pWDICtx: pointer to the WLAN DAL context
7675 pEventData: pointer to the event information structure
7676
Jeff Johnson295189b2012-06-20 16:38:30 -07007677 @see
7678 @return Result of the function call
7679*/
7680WDI_Status
7681WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007682(
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 WDI_ControlBlockType* pWDICtx,
7684 WDI_EventInfoType* pEventData
7685)
7686{
7687 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 ----------------------------------------------------------------------*/
7690 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7691 {
7692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007693 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007694 pWDICtx, pEventData);
7695 return WDI_STATUS_E_FAILURE;
7696 }
7697
7698 /*We should normally not get a STOP request if we are already stopped
7699 since we should normally be stopped by the UMAC. However in some
7700 error situations we put ourselves in the stopped state without the
7701 UMAC knowing, so when we get a STOP request in this state we still
7702 process it since we need to clean up the underlying state */
7703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7704 "Processing stop request while stopped in FSM");
7705
7706 /*Return Success*/
7707 return WDI_ProcessRequest( pWDICtx, pEventData );
7708
7709}/*WDI_MainStopStopped*/
7710
7711/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007713--------------------------------------------------------------------------*/
7714/**
7715 @brief Main FSM Start function for state BUSY
7716
Jeff Johnsone7245742012-09-05 17:12:55 -07007717
7718 @param pWDICtx: pointer to the WLAN DAL context
7719 pEventData: pointer to the event information structure
7720
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 @see
7722 @return Result of the function call
7723*/
7724WDI_Status
7725WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007726(
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 WDI_ControlBlockType* pWDICtx,
7728 WDI_EventInfoType* pEventData
7729)
7730{
7731 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 ----------------------------------------------------------------------*/
7734 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7735 {
7736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007737 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 pWDICtx, pEventData);
7739 return WDI_STATUS_E_FAILURE;
7740 }
7741
7742 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 ----------------------------------------------------------------------*/
7745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7746 "WDI Busy state - queue start request");
7747
7748 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007749 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007750
7751 /*Return Success*/
7752 return WDI_STATUS_PENDING;
7753}/*WDI_MainStartBusy*/
7754
7755/**
7756 @brief Main FSM Stop function for state BUSY
7757
Jeff Johnsone7245742012-09-05 17:12:55 -07007758
7759 @param pWDICtx: pointer to the WLAN DAL context
7760 pEventData: pointer to the event information structure
7761
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 @see
7763 @return Result of the function call
7764*/
7765WDI_Status
7766WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007767(
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 WDI_ControlBlockType* pWDICtx,
7769 WDI_EventInfoType* pEventData
7770)
7771{
7772 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 ----------------------------------------------------------------------*/
7775 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7776 {
7777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007778 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 pWDICtx, pEventData);
7780 return WDI_STATUS_E_FAILURE;
7781 }
7782
7783 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 ----------------------------------------------------------------------*/
7786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7787 "WDI Busy state - queue stop request");
7788
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007790 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007791
Jeff Johnson295189b2012-06-20 16:38:30 -07007792}/*WDI_MainStopBusy*/
7793
7794/**
7795 @brief Main FSM Request function for state BUSY
7796
Jeff Johnsone7245742012-09-05 17:12:55 -07007797
7798 @param pWDICtx: pointer to the WLAN DAL context
7799 pEventData: pointer to the event information structure
7800
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 @see
7802 @return Result of the function call
7803*/
7804WDI_Status
7805WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007806(
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 WDI_ControlBlockType* pWDICtx,
7808 WDI_EventInfoType* pEventData
7809)
7810{
7811 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 ----------------------------------------------------------------------*/
7814 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7815 {
7816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007817 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 pWDICtx, pEventData);
7819 return WDI_STATUS_E_FAILURE;
7820 }
7821
7822 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007823 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 ----------------------------------------------------------------------*/
7825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7826 "WDI Busy state - queue request %d because waiting for response %d",
7827 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7828
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007831
Jeff Johnson295189b2012-06-20 16:38:30 -07007832}/*WDI_MainReqBusy*/
7833/**
7834 @brief Main FSM Close function for state BUSY
7835
Jeff Johnsone7245742012-09-05 17:12:55 -07007836
7837 @param pWDICtx: pointer to the WLAN DAL context
7838 pEventData: pointer to the event information structure
7839
Jeff Johnson295189b2012-06-20 16:38:30 -07007840 @see
7841 @return Result of the function call
7842*/
7843WDI_Status
7844WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007845(
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 WDI_ControlBlockType* pWDICtx,
7847 WDI_EventInfoType* pEventData
7848)
7849{
7850 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007852 ----------------------------------------------------------------------*/
7853 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7854 {
7855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007856 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 pWDICtx, pEventData);
7858 return WDI_STATUS_E_FAILURE;
7859 }
7860
7861 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007862 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 ----------------------------------------------------------------------*/
7864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7865 "WDI Busy state - queue close request");
7866
Jeff Johnsone7245742012-09-05 17:12:55 -07007867 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007869
Jeff Johnson295189b2012-06-20 16:38:30 -07007870}/*WDI_MainCloseBusy*/
7871
7872/**
7873 @brief Main FSM Shutdown function for INIT & STARTED states
7874
7875
7876 @param pWDICtx: pointer to the WLAN DAL context
7877 pEventData: pointer to the event information structure
7878
7879 @see
7880 @return Result of the function call
7881*/
7882WDI_Status
7883WDI_MainShutdown
7884(
7885 WDI_ControlBlockType* pWDICtx,
7886 WDI_EventInfoType* pEventData
7887)
7888{
7889 /*--------------------------------------------------------------------
7890 Sanity Check
7891 ----------------------------------------------------------------------*/
7892 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7893 {
7894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007895 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 pWDICtx, pEventData);
7897 return WDI_STATUS_E_FAILURE;
7898 }
7899
7900 /*State at this point is BUSY - because we enter this state before posting
7901 an event to the FSM in order to prevent potential race conditions*/
7902
7903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7904 "Processing shutdown request in FSM");
7905
7906 /*Return Success*/
7907 return WDI_ProcessRequest( pWDICtx, pEventData );
7908
7909}/*WDI_MainShutdown*/
7910
7911/**
7912 @brief Main FSM Shutdown function for BUSY state
7913
7914
7915 @param pWDICtx: pointer to the WLAN DAL context
7916 pEventData: pointer to the event information structure
7917
7918 @see
7919 @return Result of the function call
7920*/
7921WDI_Status
7922WDI_MainShutdownBusy
7923(
7924 WDI_ControlBlockType* pWDICtx,
7925 WDI_EventInfoType* pEventData
7926)
7927{
7928 /*--------------------------------------------------------------------
7929 Sanity Check
7930 ----------------------------------------------------------------------*/
7931 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7932 {
7933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007934 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007935 pWDICtx, pEventData);
7936 return WDI_STATUS_E_FAILURE;
7937 }
7938
7939 /* If you are waiting for a HAL response at this stage, you are not
7940 * going to get it. Riva is already shutdown/crashed.
7941 */
7942 wpalTimerStop(&gWDICb.wptResponseTimer);
7943
7944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7945 "Processing shutdown request in FSM: Busy state ");
7946
7947 return WDI_ProcessRequest( pWDICtx, pEventData );
7948
7949}/*WDI_MainShutdownBusy*/
7950
7951
Jeff Johnsone7245742012-09-05 17:12:55 -07007952/*=======================================================================
7953
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007955
Jeff Johnson295189b2012-06-20 16:38:30 -07007956*=======================================================================*/
7957
7958/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007960========================================================================*/
7961/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007964
7965 @param pWDICtx: pointer to the WLAN DAL context
7966 pEventData: pointer to the event information structure
7967
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 @see
7969 @return Result of the function call
7970*/
7971WDI_Status
7972WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007973(
Jeff Johnson295189b2012-06-20 16:38:30 -07007974 WDI_ControlBlockType* pWDICtx,
7975 WDI_EventInfoType* pEventData
7976)
7977{
7978 WDI_StartReqParamsType* pwdiStartParams = NULL;
7979 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 wpt_uint16 usDataOffset = 0;
7982 wpt_uint16 usSendSize = 0;
7983
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 tHalMacStartReqMsg halStartReq;
7985 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7987
7988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 -------------------------------------------------------------------------*/
7991 if (( NULL == pEventData ) ||
7992 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7993 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7994 {
7995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 }
8000
8001 /*-----------------------------------------------------------------------
8002 Get message buffer
8003 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 pwdiStartParams->usConfigBufferLen;
8006
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008008 usLen,
8009 &pSendBuffer, &usDataOffset, &usSendSize))||
8010 ( usSendSize < (usDataOffset + usLen )))
8011 {
8012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008013 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 pEventData, pwdiStartParams, wdiStartRspCb);
8015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 }
8018
8019 /*-----------------------------------------------------------------------
8020 Fill in the message
8021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 halStartReq.startReqParams.driverType =
8023 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07008024
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 halStartReq.startReqParams.uConfigBufferLen =
8026 pwdiStartParams->usConfigBufferLen;
8027 wpalMemoryCopy( pSendBuffer+usDataOffset,
8028 &halStartReq.startReqParams,
8029 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008030
Jeff Johnsone7245742012-09-05 17:12:55 -07008031 usDataOffset += sizeof(halStartReq.startReqParams);
8032 wpalMemoryCopy( pSendBuffer+usDataOffset,
8033 pwdiStartParams->pConfigBuffer,
8034 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07008035
8036 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008038
8039 /*Save Low Level Ind CB and associated user data - it will be used further
8040 on when an indication is coming from the lower MAC*/
8041 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008043
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
8050
Jeff Johnsone7245742012-09-05 17:12:55 -07008051
Jeff Johnson295189b2012-06-20 16:38:30 -07008052}/*WDI_ProcessStartReq*/
8053
8054/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008057
8058 @param pWDICtx: pointer to the WLAN DAL context
8059 pEventData: pointer to the event information structure
8060
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 @see
8062 @return Result of the function call
8063*/
8064WDI_Status
8065WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008066(
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 WDI_ControlBlockType* pWDICtx,
8068 WDI_EventInfoType* pEventData
8069)
8070{
8071 WDI_StopReqParamsType* pwdiStopParams = NULL;
8072 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 wpt_uint16 usDataOffset = 0;
8075 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07008076 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8079
8080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 -------------------------------------------------------------------------*/
8083 if (( NULL == pEventData ) ||
8084 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8085 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8086 {
8087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008090 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 }
8092
8093 /*-----------------------------------------------------------------------
8094 Get message buffer
8095 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 sizeof(halStopReq.stopReqParams),
8098 &pSendBuffer, &usDataOffset, &usSendSize))||
8099 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8100 {
8101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008102 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008103 pEventData, pwdiStopParams, wdiStopRspCb);
8104 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008105 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 }
8107
8108 /*-----------------------------------------------------------------------
8109 Fill in the message
8110 -----------------------------------------------------------------------*/
8111 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8112 pwdiStopParams->wdiStopReason);
8113
Jeff Johnsone7245742012-09-05 17:12:55 -07008114 wpalMemoryCopy( pSendBuffer+usDataOffset,
8115 &halStopReq.stopReqParams,
8116 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008117
8118 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008120
8121 /*! TO DO: stop the data services */
8122 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8123 {
8124 /*Stop the STA Table !UT- check this logic again
8125 It is safer to do it here than on the response - because a stop is imminent*/
8126 WDI_STATableStop(pWDICtx);
8127
8128 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008129 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8130 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 {
8132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8133 "WDI Init failed to reset power state event");
8134
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008136 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 }
8138 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008139 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8140 if( eWLAN_PAL_STATUS_SUCCESS != status )
8141 {
8142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008143 "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 -08008144 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008145 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008146 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008150 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8151 WDI_SET_POWER_STATE_TIMEOUT);
8152 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 {
8154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8155 "WDI Init failed to wait on an event");
8156
Jeff Johnsone7245742012-09-05 17:12:55 -07008157 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008158 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 }
8160 }
8161
8162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008166 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
8167
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008168fail:
8169 // Release the message buffer so we don't leak
8170 wpalMemoryFree(pSendBuffer);
8171
8172failRequest:
8173 //WDA should have failure check to avoid the memory leak
8174 return WDI_STATUS_E_FAILURE;
8175
Jeff Johnson295189b2012-06-20 16:38:30 -07008176}/*WDI_ProcessStopReq*/
8177
8178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008181
8182 @param pWDICtx: pointer to the WLAN DAL context
8183 pEventData: pointer to the event information structure
8184
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 @see
8186 @return Result of the function call
8187*/
8188WDI_Status
8189WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008190(
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 WDI_ControlBlockType* pWDICtx,
8192 WDI_EventInfoType* pEventData
8193)
8194{
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8197
8198 /*Lock control block for cleanup*/
8199 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008200
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 /*Clear all pending request*/
8202 WDI_ClearPendingRequests(pWDICtx);
8203
8204 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008206
8207 /* Close Data transport*/
8208 /* FTM mode does not open Data Path */
8209 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8210 {
8211 WDTS_Close(pWDICtx);
8212 }
8213
8214 /*Close the STA Table !UT- check this logic again*/
8215 WDI_STATableClose(pWDICtx);
8216
8217 /*close the PAL */
8218 wptStatus = wpalClose(pWDICtx->pPALContext);
8219 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8220 {
8221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8222 "Failed to wpal Close %d", wptStatus);
8223 WDI_ASSERT(0);
8224 }
8225
8226 /*Transition back to init state*/
8227 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8228
8229 wpalMutexRelease(&pWDICtx->wptMutex);
8230
8231 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008233
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008235}/*WDI_ProcessCloseReq*/
8236
8237
8238/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008240===========================================================================*/
8241
8242/**
8243 @brief Process Init Scan Request function (called when Main FSM
8244 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008245
8246 @param pWDICtx: pointer to the WLAN DAL context
8247 pEventData: pointer to the event information structure
8248
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 @see
8250 @return Result of the function call
8251*/
8252WDI_Status
8253WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008254(
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 WDI_ControlBlockType* pWDICtx,
8256 WDI_EventInfoType* pEventData
8257)
8258{
8259 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8260 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 wpt_uint16 usDataOffset = 0;
8263 wpt_uint16 usSendSize = 0;
8264 wpt_uint8 i = 0;
8265
8266 tHalInitScanReqMsg halInitScanReqMsg;
8267
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008269 * It shold be removed once host and riva changes are in sync*/
8270 tHalInitScanConReqMsg halInitScanConReqMsg;
8271
8272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8273
8274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 -------------------------------------------------------------------------*/
8277 if (( NULL == pEventData ) ||
8278 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8279 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8280 {
8281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 }
8286
8287#if 0
8288 wpalMutexAcquire(&pWDICtx->wptMutex);
8289 /*-----------------------------------------------------------------------
8290 Check to see if SCAN is already in progress - if so reject the req
8291 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 -----------------------------------------------------------------------*/
8294 if ( pWDICtx->bScanInProgress )
8295 {
8296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8297 "Scan is already in progress - subsequent scan is not allowed"
8298 " until the first scan completes");
8299
8300 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 }
8303
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8305 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008306
8307 wpalMutexRelease(&pWDICtx->wptMutex);
8308#endif
Viral Modid86bde22012-12-10 13:09:21 -08008309 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 * It shold be removed once host and riva changes are in sync*/
8313 /*-----------------------------------------------------------------------
8314 Get message buffer
8315 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 sizeof(halInitScanConReqMsg.initScanParams),
8318 &pSendBuffer, &usDataOffset, &usSendSize))||
8319 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8320 {
8321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008322 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008326 }
8327
8328
8329 /*-----------------------------------------------------------------------
8330 Fill in the message
8331 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8334
8335 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8336 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8337
Jeff Johnsone7245742012-09-05 17:12:55 -07008338 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8344
8345 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8346 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8347
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8349 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008350
Jeff Johnsone7245742012-09-05 17:12:55 -07008351 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8353
8354 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8355 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8358 }
8359
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 wpalMemoryCopy( pSendBuffer+usDataOffset,
8361 &halInitScanConReqMsg.initScanParams,
8362 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008363 }
8364 else
8365 {
8366 /*-----------------------------------------------------------------------
8367 Get message buffer
8368 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 sizeof(halInitScanReqMsg.initScanParams),
8371 &pSendBuffer, &usDataOffset, &usSendSize))||
8372 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8373 {
8374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008375 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008376 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008379 }
8380
8381
8382 /*-----------------------------------------------------------------------
8383 Fill in the message
8384 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8387
8388 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8389 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8390
Jeff Johnsone7245742012-09-05 17:12:55 -07008391 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008392 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008395 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008396 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8397
8398 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8399 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8400
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8403
8404 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8405 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8408 }
8409
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 wpalMemoryCopy( pSendBuffer+usDataOffset,
8411 &halInitScanReqMsg.initScanParams,
8412 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 }
8414
8415 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008417
8418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008422 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8423
8424}/*WDI_ProcessInitScanReq*/
8425
8426/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008429
8430 @param pWDICtx: pointer to the WLAN DAL context
8431 pEventData: pointer to the event information structure
8432
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 @see
8434 @return Result of the function call
8435*/
8436WDI_Status
8437WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008438(
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 WDI_ControlBlockType* pWDICtx,
8440 WDI_EventInfoType* pEventData
8441)
8442{
8443 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8444 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008445 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008446 wpt_uint16 usDataOffset = 0;
8447 wpt_uint16 usSendSize = 0;
8448
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8451
8452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 -------------------------------------------------------------------------*/
8455 if (( NULL == pEventData ) ||
8456 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8457 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8458 {
8459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 }
8464
8465#if 0
8466 wpalMutexAcquire(&pWDICtx->wptMutex);
8467 /*-----------------------------------------------------------------------
8468 Check to see if SCAN is already in progress - start scan is only
8469 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8474 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8475 {
8476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8477 "Scan start not allowed in this state %d %d",
8478 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008479
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 }
8483
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008485
8486 wpalMutexRelease(&pWDICtx->wptMutex);
8487#endif
8488
8489 /*-----------------------------------------------------------------------
8490 Get message buffer
8491 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 sizeof(halStartScanReqMsg.startScanParams),
8494 &pSendBuffer, &usDataOffset, &usSendSize))||
8495 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8496 {
8497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008498 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 }
8503
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 wpalMemoryCopy( pSendBuffer+usDataOffset,
8507 &halStartScanReqMsg.startScanParams,
8508 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008509
8510 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008512
8513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008514 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008515 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8518}/*WDI_ProcessStartScanReq*/
8519
8520
8521/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008523 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008524
8525 @param pWDICtx: pointer to the WLAN DAL context
8526 pEventData: pointer to the event information structure
8527
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 @see
8529 @return Result of the function call
8530*/
8531WDI_Status
8532WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008533(
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 WDI_ControlBlockType* pWDICtx,
8535 WDI_EventInfoType* pEventData
8536)
8537{
8538 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8539 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 wpt_uint16 usDataOffset = 0;
8542 wpt_uint16 usSendSize = 0;
8543
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8546
8547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 -------------------------------------------------------------------------*/
8550 if (( NULL == pEventData ) ||
8551 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8552 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8553 {
8554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 }
8559
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8561 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008562 * forwarded to HAL and result in hang*/
8563#if 0
8564 wpalMutexAcquire(&pWDICtx->wptMutex);
8565 /*-----------------------------------------------------------------------
8566 Check to see if SCAN is already in progress - end scan is only
8567 allowed when a scan is ongoing and the state of the scan procedure
8568 is started
8569 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008570 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8572 {
8573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8574 "End start not allowed in this state %d %d",
8575 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008576
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 }
8580
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008582
8583 wpalMutexRelease(&pWDICtx->wptMutex);
8584#endif
8585
8586 /*-----------------------------------------------------------------------
8587 Get message buffer
8588 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 sizeof(halEndScanReqMsg.endScanParams),
8591 &pSendBuffer, &usDataOffset, &usSendSize))||
8592 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8593 {
8594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008595 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 }
8600
8601 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 wpalMemoryCopy( pSendBuffer+usDataOffset,
8604 &halEndScanReqMsg.endScanParams,
8605 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008606
8607 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008609
8610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008614 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8615}/*WDI_ProcessEndScanReq*/
8616
8617
8618/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008621
8622 @param pWDICtx: pointer to the WLAN DAL context
8623 pEventData: pointer to the event information structure
8624
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 @see
8626 @return Result of the function call
8627*/
8628WDI_Status
8629WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008630(
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 WDI_ControlBlockType* pWDICtx,
8632 WDI_EventInfoType* pEventData
8633)
8634{
8635 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8636 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 wpt_uint16 usDataOffset = 0;
8639 wpt_uint16 usSendSize = 0;
8640 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008641 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 tHalFinishScanReqMsg halFinishScanReqMsg;
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 == pEventData->pEventData) ||
8650 ( NULL == 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
8658 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8659 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8661 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 * forwarded to HAL and result in hang*/
8663#if 0
8664 wpalMutexAcquire(&pWDICtx->wptMutex);
8665 /*-----------------------------------------------------------------------
8666 Check to see if SCAN is already in progress
8667 Finish scan gets invoked any scan states. ie. abort scan
8668 It should be allowed in any states.
8669 -----------------------------------------------------------------------*/
8670 if ( !pWDICtx->bScanInProgress )
8671 {
8672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8673 "Finish start not allowed in this state %d",
8674 pWDICtx->bScanInProgress );
8675
8676 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008677 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 }
8679
8680 /*-----------------------------------------------------------------------
8681 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8685 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 wpalMutexRelease(&pWDICtx->wptMutex);
8687#endif
8688
8689 if ( pWDICtx->bInBmps )
8690 {
8691 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008692 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8693 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8694 {
8695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008696 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008697 WDI_ASSERT(0);
8698 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 }
8700
8701 /*-----------------------------------------------------------------------
8702 Get message buffer
8703 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 sizeof(halFinishScanReqMsg.finishScanParams),
8706 &pSendBuffer, &usDataOffset, &usSendSize))||
8707 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8708 {
8709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008710 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 }
8715
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8718
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8721
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8724
8725 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8726 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8727
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8734
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8737
8738 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8739 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8742 }
8743
8744 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8745 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8746
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 wpalMemoryCopy( pSendBuffer+usDataOffset,
8748 &halFinishScanReqMsg.finishScanParams,
8749 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008750
8751 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008753
8754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8759}/*WDI_ProcessFinishScanReq*/
8760
8761
8762/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008764==========================================================================*/
8765/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 @brief Process BSS Join for a given Session
8767
8768 @param pWDICtx: pointer to the WLAN DAL context
8769 pEventData: pointer to the event information structure
8770
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 @see
8772 @return Result of the function call
8773*/
8774WDI_Status
8775WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008776(
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 WDI_ControlBlockType* pWDICtx,
8778 WDI_JoinReqParamsType* pwdiJoinParams,
8779 WDI_JoinRspCb wdiJoinRspCb,
8780 void* pUserData
8781)
8782{
8783 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 wpt_uint16 usDataOffset = 0;
8786 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008788
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8791
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008792 wpalMutexAcquire(&pWDICtx->wptMutex);
8793
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 /*------------------------------------------------------------------------
8795 Check to see if we have any session with this BSSID already stored, we
8796 should not
8797 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8799 pwdiJoinParams->wdiReqInfo.macBSSID,
8800 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008801
8802 if ( NULL != pBSSSes )
8803 {
8804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008805 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8806 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008807
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008808 /*reset the bAssociationInProgress otherwise the next
8809 *join request will be queued*/
8810 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8811 wpalMutexRelease(&pWDICtx->wptMutex);
8812 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 }
8814
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008819 if ( NULL == pBSSSes )
8820 {
8821
8822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8823 "DAL has no free sessions - cannot run another join");
8824
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008825 /*reset the bAssociationInProgress otherwise the next
8826 *join request will be queued*/
8827 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008829 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008830 }
8831
8832 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8834 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 WDI_MAC_ADDR_LEN);
8836
8837 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008840
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 wpalMutexRelease(&pWDICtx->wptMutex);
8842
8843 /*-----------------------------------------------------------------------
8844 Get message buffer
8845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 sizeof(halJoinReqMsg.joinReqParams),
8848 &pSendBuffer, &usDataOffset, &usSendSize))||
8849 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8850 {
8851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008852 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008853 pUserData, pwdiJoinParams, wdiJoinRspCb);
8854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 }
8857
8858 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008860
8861 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 pwdiJoinParams->wdiReqInfo.macSTASelf,
8863 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008864
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8867
8868 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8869
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008870#ifdef WLAN_FEATURE_VOWIFI
8871 halJoinReqMsg.joinReqParams.maxTxPower =
8872 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8873#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8876#endif
8877
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008879 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8880 wdiSecondaryChannelOffset);
8881
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 wpalMemoryCopy( pSendBuffer+usDataOffset,
8883 &halJoinReqMsg.joinReqParams,
8884 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008885
8886 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008888
8889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008890 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8893 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008894
8895}/*WDI_ProcessBSSSessionJoinReq*/
8896
8897/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008900
8901 @param pWDICtx: pointer to the WLAN DAL context
8902 pEventData: pointer to the event information structure
8903
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 @see
8905 @return Result of the function call
8906*/
8907WDI_Status
8908WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008909(
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 WDI_ControlBlockType* pWDICtx,
8911 WDI_EventInfoType* pEventData
8912)
8913{
8914 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8915 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8916 WDI_JoinRspCb wdiJoinRspCb = NULL;
8917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8918
8919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 -------------------------------------------------------------------------*/
8922 if (( NULL == pEventData ) ||
8923 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8924 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8925 {
8926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008931
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 /*-------------------------------------------------------------------------
8933 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 -------------------------------------------------------------------------*/
8936 wpalMutexAcquire(&pWDICtx->wptMutex);
8937
8938 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8939 {
8940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8941 "Association is currently in progress, queueing new join req");
8942
8943 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 pwdiJoinParams->wdiReqInfo.macBSSID);
8946
8947 wpalMutexRelease(&pWDICtx->wptMutex);
8948
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 }
8951
8952 /*Starting a new association */
8953 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8954 wpalMutexRelease(&pWDICtx->wptMutex);
8955
8956 /*Process the Join Request*/
8957 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8958 wdiJoinRspCb,pEventData->pUserData);
8959
8960}/*WDI_ProcessJoinReq*/
8961
8962
8963/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008966
8967 @param pWDICtx: pointer to the WLAN DAL context
8968 pEventData: pointer to the event information structure
8969
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 @see
8971 @return Result of the function call
8972*/
8973WDI_Status
8974WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008975(
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 WDI_ControlBlockType* pWDICtx,
8977 WDI_EventInfoType* pEventData
8978)
8979{
8980 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8981 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 wpt_uint16 uMsgSize = 0;
8985 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008986 wpt_uint16 usDataOffset = 0;
8987 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008989
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8992
8993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 -------------------------------------------------------------------------*/
8996 if (( NULL == pEventData ) ||
8997 ( NULL == pEventData->pEventData ) ||
8998 ( NULL == pEventData->pCBfnc ))
8999 {
9000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 }
9005
Abhishek Singh6927fa02014-06-27 17:19:55 +05309006 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
9008 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
9009 /*-------------------------------------------------------------------------
9010 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009011 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 -------------------------------------------------------------------------*/
9013 wpalMutexAcquire(&pWDICtx->wptMutex);
9014
9015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009018 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9019 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
9020 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009021
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 {
9024#ifdef WLAN_FEATURE_VOWIFI_11R
9025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 if ( NULL == pBSSSes )
9030 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009031
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9033 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009034
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009036 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009038
Jeff Johnson295189b2012-06-20 16:38:30 -07009039 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9041 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009043
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9047#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 * Request in case of IBSS*/
9050 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
9051 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
9052 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
9053 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
9054 {
9055 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 if ( NULL == pBSSSes )
9060 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009061
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9063 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009064
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009068
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009070 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9071 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009073
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9077 }
9078 else
9079 {
9080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9082 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9083 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9084
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 /* for IBSS testing */
9086 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 }
9089#endif
9090 }
9091
9092 /*------------------------------------------------------------------------
9093 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009095 ------------------------------------------------------------------------*/
9096 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9097 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9099 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9100 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9101 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009102
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009104
9105 wpalMutexRelease(&pWDICtx->wptMutex);
9106
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009108 }
9109
9110 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9112 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 sizeof(pWDICtx->wdiCachedConfigBssReq));
9114
9115 wpalMutexRelease(&pWDICtx->wptMutex);
9116
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9118#ifdef WLAN_FEATURE_11AC
9119 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009120 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 else
9122#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009123 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009124
9125 /*-----------------------------------------------------------------------
9126 Get message buffer
9127 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9130 ( usSendSize < (usDataOffset + uMsgSize )))
9131 {
9132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009133 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 }
9138
9139 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009140#ifdef WLAN_FEATURE_11AC
9141 if (WDI_getFwWlanFeatCaps(DOT11AC))
9142 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9143 &pwdiConfigBSSParams->wdiReqInfo);
9144 else
9145#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 &pwdiConfigBSSParams->wdiReqInfo);
9148
9149 /* Need to fill in the STA Index to invalid, since at this point we have not
9150 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009152
9153 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9155
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009156#ifdef WLAN_FEATURE_11AC
9157 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9158 wpalMemoryCopy( pSendBuffer+usDataOffset,
9159 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9160 uMsgSize);
9161 }else
9162#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009163 {
9164 if ( uMsgSize <= sizeof(tConfigBssParams) )
9165 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009166 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009167 &halConfigBssReqMsg.uBssParams.configBssParams,
9168 uMsgSize);
9169 }
9170 else
9171 {
9172 return WDI_STATUS_E_FAILURE;
9173 }
9174 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009175
9176 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309178 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9183 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 WDI_CONFIG_BSS_RESP);
9185
9186}/*WDI_ProcessConfigBSSReq*/
9187
9188
9189/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009192
9193 @param pWDICtx: pointer to the WLAN DAL context
9194 pEventData: pointer to the event information structure
9195
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 @see
9197 @return Result of the function call
9198*/
9199WDI_Status
9200WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009201(
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 WDI_ControlBlockType* pWDICtx,
9203 WDI_EventInfoType* pEventData
9204)
9205{
9206 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9207 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 wpt_uint16 usDataOffset = 0;
9212 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009214
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9217
9218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 -------------------------------------------------------------------------*/
9221 if (( NULL == pEventData ) ||
9222 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9223 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9224 {
9225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 }
9230
9231 /*-------------------------------------------------------------------------
9232 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 -------------------------------------------------------------------------*/
9235 wpalMutexAcquire(&pWDICtx->wptMutex);
9236
9237 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9241 pwdiDelBSSParams->ucBssIdx,
9242 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009243
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 {
9246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 "%s: BSS does not yet exist. ucBssIdx %d",
9248 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009249
9250 wpalMutexRelease(&pWDICtx->wptMutex);
9251
9252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009254
9255 /*------------------------------------------------------------------------
9256 Check if this BSS is being currently processed or queued,
9257 if queued - queue the new request as well
9258 ------------------------------------------------------------------------*/
9259 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009260 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9262 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9263 __func__, pwdiDelBSSParams->ucBssIdx);
9264
9265 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9266
9267 wpalMutexRelease(&pWDICtx->wptMutex);
9268
9269 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009271
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 /*-----------------------------------------------------------------------
9273 If we receive a Del BSS request for an association that is already in
9274 progress, it indicates that the assoc has failed => we no longer have
9275 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 -----------------------------------------------------------------------*/
9278 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9279 {
9280 /*We can switch to false here because even if a subsequent Join comes in
9281 it will only be processed when DAL transitions out of BUSY state which
9282 happens when the Del BSS request comes */
9283 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9284
9285 /*Former association is complete - prepare next pending assoc for
9286 processing */
9287 WDI_DequeueAssocRequest(pWDICtx);
9288 }
9289
9290 wpalMutexRelease(&pWDICtx->wptMutex);
9291 /*-----------------------------------------------------------------------
9292 Get message buffer
9293 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 sizeof(halBssReqMsg.deleteBssParams),
9296 &pSendBuffer, &usDataOffset, &usSendSize))||
9297 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9298 {
9299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009300 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 }
9305
9306 /*Fill in the message request structure*/
9307
9308 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009309 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009310
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 wpalMemoryCopy( pSendBuffer+usDataOffset,
9312 &halBssReqMsg.deleteBssParams,
9313 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009314
9315 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009317
Jeff Johnsone7245742012-09-05 17:12:55 -07009318
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009322 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9324
Jeff Johnsone7245742012-09-05 17:12:55 -07009325
Jeff Johnson295189b2012-06-20 16:38:30 -07009326}/*WDI_ProcessDelBSSReq*/
9327
9328/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009329 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009331
9332 @param pWDICtx: pointer to the WLAN DAL context
9333 pEventData: pointer to the event information structure
9334
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 @see
9336 @return Result of the function call
9337*/
9338WDI_Status
9339WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009340(
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 WDI_ControlBlockType* pWDICtx,
9342 WDI_EventInfoType* pEventData
9343)
9344{
9345 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9346 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 wpt_uint16 usDataOffset = 0;
9351 wpt_uint16 usSendSize = 0;
9352 wpt_uint16 uMsgSize = 0;
9353 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009355
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9358
9359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009361 -------------------------------------------------------------------------*/
9362 if (( NULL == pEventData ) ||
9363 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9364 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9365 {
9366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 }
9371
9372 /*-------------------------------------------------------------------------
9373 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 -------------------------------------------------------------------------*/
9376 wpalMutexAcquire(&pWDICtx->wptMutex);
9377
9378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9382 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9383 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009384
9385 if ( NULL == pBSSSes )
9386 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9388 "%s: Association sequence for this BSS does not yet exist - "
9389 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9390 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009391
9392 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009394 }
9395
9396 /*------------------------------------------------------------------------
9397 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 ------------------------------------------------------------------------*/
9400 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9401 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9403 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9404 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009405
Jeff Johnsone7245742012-09-05 17:12:55 -07009406 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009407
9408 wpalMutexRelease(&pWDICtx->wptMutex);
9409
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 }
9412
9413 /*-----------------------------------------------------------------------
9414 If Post Assoc was not yet received - the current association must
9415 be in progress
9416 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9419 {
9420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9421 "Association sequence for this BSS association no longer in "
9422 "progress - not allowed");
9423
9424 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 }
9427
9428 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 -----------------------------------------------------------------------*/
9431 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9432 {
9433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9434 "Post Assoc not allowed before JOIN - failing request");
9435
9436 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009438 }
9439
9440 wpalMutexRelease(&pWDICtx->wptMutex);
9441
9442 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9443 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9444 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9449 ( usSendSize < (usDataOffset + uMsgSize )))
9450 {
9451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009452 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 }
9457
9458 /*Copy the STA parameters */
9459 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9460 &pwdiPostAssocParams->wdiSTAParams );
9461
9462 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 WDI_STATableFindStaidByAddr(pWDICtx,
9465 pwdiPostAssocParams->wdiSTAParams.macSTA,
9466 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9467 {
9468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009469 MAC_ADDRESS_STR
9470 ": This station does not exist in the WDI Station Table",
9471 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009473 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 }
9476
9477 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009478 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009479 pBSSSes->ucBSSIdx;
9480
9481 /*Copy the BSS parameters */
9482 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9483 &pwdiPostAssocParams->wdiBSSParams);
9484
9485 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 WDI_STATableFindStaidByAddr(pWDICtx,
9488 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 {
9491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009492 MAC_ADDRESS_STR
9493 ": This station does not exist in the WDI Station Table",
9494 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009495 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009496 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 }
9499
9500 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 pBSSSes->ucBSSIdx;
9503
Jeff Johnsone7245742012-09-05 17:12:55 -07009504
9505 wpalMemoryCopy( pSendBuffer+usDataOffset,
9506 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9507 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009508
9509 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9510
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9512 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9513 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009514
Jeff Johnsone7245742012-09-05 17:12:55 -07009515
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009518
Jeff Johnsone7245742012-09-05 17:12:55 -07009519
9520 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009523
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309524 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009528 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009529 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9530
Jeff Johnsone7245742012-09-05 17:12:55 -07009531
Jeff Johnson295189b2012-06-20 16:38:30 -07009532}/*WDI_ProcessPostAssocReq*/
9533
9534/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009537
9538 @param pWDICtx: pointer to the WLAN DAL context
9539 pEventData: pointer to the event information structure
9540
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 @see
9542 @return Result of the function call
9543*/
9544WDI_Status
9545WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009546(
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 WDI_ControlBlockType* pWDICtx,
9548 WDI_EventInfoType* pEventData
9549)
9550{
9551 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9552 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 wpt_uint16 usDataOffset = 0;
9557 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9560
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9563
9564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009565 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 -------------------------------------------------------------------------*/
9567 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9568 ( NULL == pEventData->pCBfnc ))
9569 {
9570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 }
9575
9576 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9577 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9578 /*-------------------------------------------------------------------------
9579 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009580 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009581 -------------------------------------------------------------------------*/
9582 wpalMutexAcquire(&pWDICtx->wptMutex);
9583
9584 /*------------------------------------------------------------------------
9585 Find the BSS for which the request is made and identify WDI session
9586 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9588 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 &macBSSID))
9590 {
9591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009592 "This station does not exist in the WDI Station Table %d",
9593 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009596 }
9597
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9599 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9602 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9603 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009604
9605 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 }
9608
9609 /*------------------------------------------------------------------------
9610 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 ------------------------------------------------------------------------*/
9613 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9614 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9616 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9617 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009618
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 }
9623
9624 wpalMutexRelease(&pWDICtx->wptMutex);
9625 /*-----------------------------------------------------------------------
9626 Get message buffer
9627 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 sizeof(halDelStaReqMsg.delStaParams),
9630 &pSendBuffer, &usDataOffset, &usSendSize))||
9631 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9632 {
9633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009634 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 }
9639
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9641 wpalMemoryCopy( pSendBuffer+usDataOffset,
9642 &halDelStaReqMsg.delStaParams,
9643 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009644
9645 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009647
9648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009650 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9653
9654}/*WDI_ProcessDelSTAReq*/
9655
9656
9657/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009659==========================================================================*/
9660/**
9661 @brief Process Set BSS Key Request function (called when Main FSM
9662 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009663
9664 @param pWDICtx: pointer to the WLAN DAL context
9665 pEventData: pointer to the event information structure
9666
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 @see
9668 @return Result of the function call
9669*/
9670WDI_Status
9671WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009672(
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 WDI_ControlBlockType* pWDICtx,
9674 WDI_EventInfoType* pEventData
9675)
9676{
9677 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9678 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 wpt_uint16 usDataOffset = 0;
9683 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9686 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309687 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009688
9689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9690
9691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009693 -------------------------------------------------------------------------*/
9694 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9695 ( NULL == pEventData->pCBfnc ))
9696 {
9697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 }
9702
9703 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9704 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9705 /*-------------------------------------------------------------------------
9706 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009708 -------------------------------------------------------------------------*/
9709 wpalMutexAcquire(&pWDICtx->wptMutex);
9710
9711 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9715 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9716 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009717
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 {
9720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9722 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009723
9724 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 }
9727
9728 /*------------------------------------------------------------------------
9729 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009731 ------------------------------------------------------------------------*/
9732 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9733 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9735 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9736 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009737
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009740 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009741 }
9742
9743
9744 wpalMutexRelease(&pWDICtx->wptMutex);
9745 /*-----------------------------------------------------------------------
9746 Get message buffer
9747 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9750 &pSendBuffer, &usDataOffset, &usSendSize))||
9751 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9752 {
9753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009754 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 }
9759
9760 /*-----------------------------------------------------------------------
9761 Copy the Key parameters into the HAL message
9762 -----------------------------------------------------------------------*/
9763
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765
Jeff Johnsone7245742012-09-05 17:12:55 -07009766 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009767 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9768
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9771
9772 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9773 keyIndex++)
9774 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9777 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9778 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9779 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9780 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309781
9782 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9783 {
9784 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9785 {
9786 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9787 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9788 }
9789
9790 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9791 {
9792 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9793 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9794 }
9795
9796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9797 "%s: Negated Keys", __func__);
9798 }
9799 else
9800 {
9801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9802 "%s: No change in Keys", __func__);
9803 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309806 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9807 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9808 WDI_MAX_KEY_LENGTH);
9809 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309814 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009815
9816 wpalMemoryCopy( pSendBuffer+usDataOffset,
9817 &halSetBssKeyReqMsg.setBssKeyParams,
9818 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009819
9820 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009822
9823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9827 wdiSetBSSKeyRspCb, pEventData->pUserData,
9828 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009829
9830}/*WDI_ProcessSetBssKeyReq*/
9831
9832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009835
9836 @param pWDICtx: pointer to the WLAN DAL context
9837 pEventData: pointer to the event information structure
9838
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 @see
9840 @return Result of the function call
9841*/
9842WDI_Status
9843WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009844(
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 WDI_ControlBlockType* pWDICtx,
9846 WDI_EventInfoType* pEventData
9847)
9848{
9849 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9850 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009852 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009853 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009854 wpt_uint16 usDataOffset = 0;
9855 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009856 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009857 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9859
9860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 -------------------------------------------------------------------------*/
9863 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9864 ( NULL == pEventData->pCBfnc ))
9865 {
9866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 }
9871
9872 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9873 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9874 /*-------------------------------------------------------------------------
9875 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 -------------------------------------------------------------------------*/
9878 wpalMutexAcquire(&pWDICtx->wptMutex);
9879
9880 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9884 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9885 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009886
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009888 {
9889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9891 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009892
9893 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 }
9896
9897 /*------------------------------------------------------------------------
9898 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 ------------------------------------------------------------------------*/
9901 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9902 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9904 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9905 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009906
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 }
9911
9912
9913 wpalMutexRelease(&pWDICtx->wptMutex);
9914
9915 /*-----------------------------------------------------------------------
9916 Get message buffer
9917 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9920 &pSendBuffer, &usDataOffset, &usSendSize))||
9921 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9922 {
9923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009924 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 }
9929 /*-----------------------------------------------------------------------
9930 Copy the Key parameters into the HAL message
9931 -----------------------------------------------------------------------*/
9932 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9933
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9936
9937 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9938
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9941
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 wpalMemoryCopy( pSendBuffer+usDataOffset,
9943 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9944 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009945
9946 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009948
9949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009955}/*WDI_ProcessRemoveBssKeyReq*/
9956
9957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009960
9961 @param pWDICtx: pointer to the WLAN DAL context
9962 pEventData: pointer to the event information structure
9963
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 @see
9965 @return Result of the function call
9966*/
9967WDI_Status
9968WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009969(
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 WDI_ControlBlockType* pWDICtx,
9971 WDI_EventInfoType* pEventData
9972)
9973{
9974 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9975 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9976 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 wpt_uint16 usDataOffset = 0;
9979 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009981 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9984 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309985 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009986
9987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9988
9989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 -------------------------------------------------------------------------*/
9992 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9993 ( NULL == pEventData->pCBfnc ))
9994 {
9995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 }
10000
10001 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10002 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10003 /*-------------------------------------------------------------------------
10004 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 -------------------------------------------------------------------------*/
10007 wpalMutexAcquire(&pWDICtx->wptMutex);
10008
10009 /*------------------------------------------------------------------------
10010 Find the BSS for which the request is made and identify WDI session
10011 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10013 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 &macBSSID))
10015 {
10016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010017 "This station does not exist in the WDI Station Table %d",
10018 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010021 }
10022
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10024 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10027 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10028 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010029
10030 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010033
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 /*------------------------------------------------------------------------
10035 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 ------------------------------------------------------------------------*/
10038 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10039 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10041 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10042 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010043
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010047 }
10048
10049
10050 wpalMutexRelease(&pWDICtx->wptMutex);
10051 /*-----------------------------------------------------------------------
10052 Get message buffer
10053 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010055 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10056 &pSendBuffer, &usDataOffset, &usSendSize))||
10057 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10058 {
10059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010060 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 }
10065 /*-----------------------------------------------------------------------
10066 Copy the STA Key parameters into the HAL message
10067 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10070
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10073
10074 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10075
10076 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10077
10078 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10079
Jeff Johnson295189b2012-06-20 16:38:30 -070010080 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10081 keyIndex++)
10082 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010084 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10085 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10086 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10087 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10088 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010089
10090 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10091 {
10092 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10093 {
10094 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10095 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10096 }
10097
10098 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10099 {
10100 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10101 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10102 }
10103
10104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10105 "%s: Negated Keys", __func__);
10106 }
10107 else
10108 {
10109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10110 "%s: No change in Keys", __func__);
10111 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010114 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10115 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10116 WDI_MAX_KEY_LENGTH);
10117 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010119 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010122 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010123
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 wpalMemoryCopy( pSendBuffer+usDataOffset,
10125 &halSetStaKeyReqMsg.setStaKeyParams,
10126 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010127
10128 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010130 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010133 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10135 wdiSetSTAKeyRspCb, pEventData->pUserData,
10136 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010137
10138}/*WDI_ProcessSetSTAKeyReq*/
10139
10140/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010141 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010142 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010143
10144 @param pWDICtx: pointer to the WLAN DAL context
10145 pEventData: pointer to the event information structure
10146
Jeff Johnson295189b2012-06-20 16:38:30 -070010147 @see
10148 @return Result of the function call
10149*/
10150WDI_Status
10151WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010152(
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 WDI_ControlBlockType* pWDICtx,
10154 WDI_EventInfoType* pEventData
10155)
10156{
10157 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10158 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10159 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 wpt_uint16 usDataOffset = 0;
10162 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 wpt_macAddr macBSSID;
10165 wpt_uint8 ucCurrentBSSSesIdx;
10166 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10168
10169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 -------------------------------------------------------------------------*/
10172 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10173 ( NULL == pEventData->pCBfnc ))
10174 {
10175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 }
10180
10181 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10182 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10183 /*-------------------------------------------------------------------------
10184 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 -------------------------------------------------------------------------*/
10187 wpalMutexAcquire(&pWDICtx->wptMutex);
10188
10189 /*------------------------------------------------------------------------
10190 Find the BSS for which the request is made and identify WDI session
10191 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10193 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 &macBSSID))
10195 {
10196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010197 "This station does not exist in the WDI Station Table %d",
10198 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 }
10202
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10204 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10207 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10208 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010209
10210 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010213
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 /*------------------------------------------------------------------------
10215 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 ------------------------------------------------------------------------*/
10218 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10219 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10221 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10222 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010223
Jeff Johnsone7245742012-09-05 17:12:55 -070010224 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010225 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 }
10228
10229
10230
10231 wpalMutexRelease(&pWDICtx->wptMutex);
10232 /*-----------------------------------------------------------------------
10233 Get message buffer
10234 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10237 &pSendBuffer, &usDataOffset, &usSendSize))||
10238 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10239 {
10240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010241 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010242 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 }
10246
10247 /*-----------------------------------------------------------------------
10248 Copy the Key parameters into the HAL message
10249 -----------------------------------------------------------------------*/
10250
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10253
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10256
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10259
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10262
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 wpalMemoryCopy( pSendBuffer+usDataOffset,
10264 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10265 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010266
10267 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010269
10270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010274 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010275 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010276
10277}/*WDI_ProcessRemoveSTAKeyReq*/
10278
10279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010280 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010281 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010282
10283 @param pWDICtx: pointer to the WLAN DAL context
10284 pEventData: pointer to the event information structure
10285
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 @see
10287 @return Result of the function call
10288*/
10289WDI_Status
10290WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010291(
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 WDI_ControlBlockType* pWDICtx,
10293 WDI_EventInfoType* pEventData
10294)
10295{
10296 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10297 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10298 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 wpt_uint16 usDataOffset = 0;
10301 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010305 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10306 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010307 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010308
10309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10310
10311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 -------------------------------------------------------------------------*/
10314 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10315 ( NULL == pEventData->pCBfnc ))
10316 {
10317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 }
10322
10323 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10324 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10325 /*-------------------------------------------------------------------------
10326 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 -------------------------------------------------------------------------*/
10329 wpalMutexAcquire(&pWDICtx->wptMutex);
10330
10331 /*------------------------------------------------------------------------
10332 Find the BSS for which the request is made and identify WDI session
10333 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010334 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10335 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 &macBSSID))
10337 {
10338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010339 "This station does not exist in the WDI Station Table %d",
10340 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 }
10344
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10346 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 {
10348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010349 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010351
10352 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010355
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 /*------------------------------------------------------------------------
10357 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 ------------------------------------------------------------------------*/
10360 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10361 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10363 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10364 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010365
Jeff Johnsone7245742012-09-05 17:12:55 -070010366 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010367 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 }
10370
10371
10372 wpalMutexRelease(&pWDICtx->wptMutex);
10373 /*-----------------------------------------------------------------------
10374 Get message buffer
10375 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10378 &pSendBuffer, &usDataOffset, &usSendSize))||
10379 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10380 {
10381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010382 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 }
10387 /*-----------------------------------------------------------------------
10388 Copy the STA Key parameters into the HAL message
10389 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10392
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10395
10396 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10397
10398 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10399
10400 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10401
Jeff Johnson295189b2012-06-20 16:38:30 -070010402 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10403 keyIndex++)
10404 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10407 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10408 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10409 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10410 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010411
10412 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10413 {
10414 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10415 {
10416 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10417 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10418 }
10419
10420 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10421 {
10422 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10423 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10424 }
10425
10426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10427 "%s: Negated Keys", __func__);
10428 }
10429 else
10430 {
10431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10432 "%s: No change in Keys", __func__);
10433 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010436 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10437 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10438 WDI_MAX_KEY_LENGTH);
10439 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010444 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 wpalMemoryCopy( pSendBuffer+usDataOffset,
10446 &halSetStaKeyReqMsg.setStaKeyParams,
10447 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010448
10449 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010451
10452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10456 wdiSetSTAKeyRspCb, pEventData->pUserData,
10457 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010458
10459}/*WDI_ProcessSetSTABcastKeyReq*/
10460
10461/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010463 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010464
10465 @param pWDICtx: pointer to the WLAN DAL context
10466 pEventData: pointer to the event information structure
10467
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 @see
10469 @return Result of the function call
10470*/
10471WDI_Status
10472WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010473(
Jeff Johnson295189b2012-06-20 16:38:30 -070010474 WDI_ControlBlockType* pWDICtx,
10475 WDI_EventInfoType* pEventData
10476)
10477{
10478 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10479 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10480 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010481 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010482 wpt_uint16 usDataOffset = 0;
10483 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 wpt_macAddr macBSSID;
10486 wpt_uint8 ucCurrentBSSSesIdx;
10487 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10489
10490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010492 -------------------------------------------------------------------------*/
10493 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10494 ( NULL == pEventData->pCBfnc ))
10495 {
10496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 }
10501
10502 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10503 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10504 /*-------------------------------------------------------------------------
10505 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010507 -------------------------------------------------------------------------*/
10508 wpalMutexAcquire(&pWDICtx->wptMutex);
10509
10510 /*------------------------------------------------------------------------
10511 Find the BSS for which the request is made and identify WDI session
10512 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010513 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10514 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 &macBSSID))
10516 {
10517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010518 "This station does not exist in the WDI Station Table %d",
10519 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010522 }
10523
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10525 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10528 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10529 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010530
10531 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010534
Jeff Johnson295189b2012-06-20 16:38:30 -070010535 /*------------------------------------------------------------------------
10536 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 ------------------------------------------------------------------------*/
10539 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10540 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10542 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10543 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010544
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010547 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010548 }
10549
10550
10551
10552 wpalMutexRelease(&pWDICtx->wptMutex);
10553 /*-----------------------------------------------------------------------
10554 Get message buffer
10555 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10558 &pSendBuffer, &usDataOffset, &usSendSize))||
10559 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10560 {
10561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010562 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010563 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010566 }
10567
10568 /*-----------------------------------------------------------------------
10569 Copy the Key parameters into the HAL message
10570 -----------------------------------------------------------------------*/
10571
Jeff Johnsone7245742012-09-05 17:12:55 -070010572 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10574
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10577
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10580
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10583
Jeff Johnsone7245742012-09-05 17:12:55 -070010584 wpalMemoryCopy( pSendBuffer+usDataOffset,
10585 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10586 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010587
10588 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010590
10591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010596 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010597
10598}/*WDI_ProcessRemoveSTABcastKeyReq*/
10599
10600/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010602==========================================================================*/
10603/**
10604 @brief Process Add TSpec Request function (called when Main FSM
10605 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010606
10607 @param pWDICtx: pointer to the WLAN DAL context
10608 pEventData: pointer to the event information structure
10609
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 @see
10611 @return Result of the function call
10612*/
10613WDI_Status
10614WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010615(
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 WDI_ControlBlockType* pWDICtx,
10617 WDI_EventInfoType* pEventData
10618)
10619{
10620 WDI_AddTSReqParamsType* pwdiAddTSParams;
10621 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 wpt_uint16 usDataOffset = 0;
10626 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 wpt_macAddr macBSSID;
10629 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010630
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10632
10633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010634 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010635 -------------------------------------------------------------------------*/
10636 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10637 ( NULL == pEventData->pCBfnc ))
10638 {
10639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010640 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 }
10644
10645 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10646 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10647 /*-------------------------------------------------------------------------
10648 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010649 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010650 -------------------------------------------------------------------------*/
10651 wpalMutexAcquire(&pWDICtx->wptMutex);
10652
10653 /*------------------------------------------------------------------------
10654 Find the BSS for which the request is made and identify WDI session
10655 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10657 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 &macBSSID))
10659 {
10660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010661 "This station does not exist in the WDI Station Table %d",
10662 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 }
10666
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10668 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10671 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10672 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010673
10674 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010677
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 /*------------------------------------------------------------------------
10679 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 ------------------------------------------------------------------------*/
10682 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10683 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10685 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10686 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010687
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010689 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010691 }
10692
10693 wpalMutexRelease(&pWDICtx->wptMutex);
10694 /*-----------------------------------------------------------------------
10695 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010696 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10699 sizeof(halAddTsParams),
10700 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010701 &usSendSize))||
10702 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10703 {
10704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010705 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010706 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 }
10710
10711 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10712 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10713
10714 //TSPEC IE
10715 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10716 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010728 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010731 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010732 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010733 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010734 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010736 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010739 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010740 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010742 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010743 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10747
10748 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010751 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010752 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010759 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010760 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010762 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10763
10764 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010766 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10769
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 wpalMemoryCopy( pSendBuffer+usDataOffset,
10771 &halAddTsParams,
10772 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010773
10774 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010776
10777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010783}/*WDI_ProcessAddTSpecReq*/
10784
10785
10786/**
10787 @brief Process Del TSpec Request function (called when Main FSM
10788 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010789
10790 @param pWDICtx: pointer to the WLAN DAL context
10791 pEventData: pointer to the event information structure
10792
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 @see
10794 @return Result of the function call
10795*/
10796WDI_Status
10797WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010798(
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 WDI_ControlBlockType* pWDICtx,
10800 WDI_EventInfoType* pEventData
10801)
10802{
10803 WDI_DelTSReqParamsType* pwdiDelTSParams;
10804 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010806 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010808 wpt_uint16 usDataOffset = 0;
10809 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10812
10813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 -------------------------------------------------------------------------*/
10816 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10817 ( NULL == pEventData->pCBfnc ))
10818 {
10819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 }
10824
10825 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10826 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10827
10828 /*-------------------------------------------------------------------------
10829 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010831 -------------------------------------------------------------------------*/
10832 wpalMutexAcquire(&pWDICtx->wptMutex);
10833
10834 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10838 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10839 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010840
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10844 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10845 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10846
Jeff Johnson295189b2012-06-20 16:38:30 -070010847 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010849 }
10850
10851 /*------------------------------------------------------------------------
10852 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 ------------------------------------------------------------------------*/
10855 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10856 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10858 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10859 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010860
Jeff Johnsone7245742012-09-05 17:12:55 -070010861 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010862 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010863 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 }
10865
10866
10867 wpalMutexRelease(&pWDICtx->wptMutex);
10868 /*-----------------------------------------------------------------------
10869 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010873 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10874 &pSendBuffer, &usDataOffset, &usSendSize))||
10875 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10876 {
10877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010878 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010882 }
10883
Jeff Johnsone7245742012-09-05 17:12:55 -070010884 wpalMemoryCopy( pSendBuffer+usDataOffset,
10885 &pwdiDelTSParams->wdiDelTSInfo,
10886 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010887
10888 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010890
10891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10895 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010896}/*WDI_ProcessDelTSpecReq*/
10897
10898/**
10899 @brief Process Update EDCA Params Request function (called when
10900 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010901
10902 @param pWDICtx: pointer to the WLAN DAL context
10903 pEventData: pointer to the event information structure
10904
Jeff Johnson295189b2012-06-20 16:38:30 -070010905 @see
10906 @return Result of the function call
10907*/
10908WDI_Status
10909WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010910(
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 WDI_ControlBlockType* pWDICtx,
10912 WDI_EventInfoType* pEventData
10913)
10914{
10915 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10916 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010918 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010919 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010920 wpt_uint16 usDataOffset = 0;
10921 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10924
10925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 -------------------------------------------------------------------------*/
10928 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10929 ( NULL == pEventData->pCBfnc ))
10930 {
10931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010935 }
10936
10937 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10938 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10939 /*-------------------------------------------------------------------------
10940 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 -------------------------------------------------------------------------*/
10943 wpalMutexAcquire(&pWDICtx->wptMutex);
10944
10945 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010948 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10949 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10950 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010951
Jeff Johnsone7245742012-09-05 17:12:55 -070010952 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010953 {
10954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10956 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010957
10958 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010959 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 }
10961
10962 /*------------------------------------------------------------------------
10963 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 ------------------------------------------------------------------------*/
10966 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10967 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10969 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10970 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010971
Jeff Johnsone7245742012-09-05 17:12:55 -070010972 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010973 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010974 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 }
10976
10977
10978 wpalMutexRelease(&pWDICtx->wptMutex);
10979 /*-----------------------------------------------------------------------
10980 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010983 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010984 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10985 &pSendBuffer, &usDataOffset, &usSendSize))||
10986 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10987 {
10988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010989 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010990 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 }
10994
Jeff Johnsone7245742012-09-05 17:12:55 -070010995 wpalMemoryCopy( pSendBuffer+usDataOffset,
10996 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10997 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010998
10999 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011000 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011001
11002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011003 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011004 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11006 wdiUpdateEDCARspCb, pEventData->pUserData,
11007 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011008}/*WDI_ProcessUpdateEDCAParamsReq*/
11009
11010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011011 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011012 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011013
11014 @param pWDICtx: pointer to the WLAN DAL context
11015 pEventData: pointer to the event information structure
11016
Jeff Johnson295189b2012-06-20 16:38:30 -070011017 @see
11018 @return Result of the function call
11019*/
11020WDI_Status
11021WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011022(
Jeff Johnson295189b2012-06-20 16:38:30 -070011023 WDI_ControlBlockType* pWDICtx,
11024 WDI_EventInfoType* pEventData
11025)
11026{
11027 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
11028 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011029 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011030 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011031 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 wpt_uint16 usDataOffset = 0;
11033 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011034 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011035 wpt_macAddr macBSSID;
11036
11037 tAddBASessionReqMsg halAddBASessionReq;
11038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11039
11040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011041 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011042 -------------------------------------------------------------------------*/
11043 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11044 ( NULL == pEventData->pCBfnc ))
11045 {
11046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 }
11051
Jeff Johnsone7245742012-09-05 17:12:55 -070011052 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011053 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11056 /*-------------------------------------------------------------------------
11057 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011059 -------------------------------------------------------------------------*/
11060 wpalMutexAcquire(&pWDICtx->wptMutex);
11061
11062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011065 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11066 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011067 &macBSSID))
11068 {
11069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011070 "This station does not exist in the WDI Station Table %d",
11071 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011072 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 }
11075
11076
Jeff Johnsone7245742012-09-05 17:12:55 -070011077 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011078
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11082 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11083 __func__, MAC_ADDR_ARRAY(macBSSID));
11084
Jeff Johnson295189b2012-06-20 16:38:30 -070011085 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011086 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011087 }
11088
11089 /*------------------------------------------------------------------------
11090 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011091 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011092 ------------------------------------------------------------------------*/
11093 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11094 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11096 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11097 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011098
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011101 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011102 }
11103
11104
11105 wpalMutexRelease(&pWDICtx->wptMutex);
11106 /*-----------------------------------------------------------------------
11107 Get message buffer
11108 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11110 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 sizeof(halAddBASessionReq.addBASessionParams),
11112 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011113 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11115 {
11116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011117 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011118 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 }
11122
11123 halAddBASessionReq.addBASessionParams.staIdx =
11124 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11125 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11126 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11127 WDI_MAC_ADDR_LEN);
11128 halAddBASessionReq.addBASessionParams.baTID =
11129 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11130 halAddBASessionReq.addBASessionParams.baPolicy =
11131 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11132 halAddBASessionReq.addBASessionParams.baBufferSize =
11133 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11134 halAddBASessionReq.addBASessionParams.baTimeout =
11135 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11136 halAddBASessionReq.addBASessionParams.baSSN =
11137 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11138 halAddBASessionReq.addBASessionParams.baDirection =
11139 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11140
Jeff Johnsone7245742012-09-05 17:12:55 -070011141 wpalMemoryCopy( pSendBuffer+usDataOffset,
11142 &halAddBASessionReq.addBASessionParams,
11143 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011144
11145 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011147
11148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011149 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11152 wdiAddBASessionRspCb, pEventData->pUserData,
11153 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011154}/*WDI_ProcessAddBASessionReq*/
11155
11156/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011157 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011158 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011159
11160 @param pWDICtx: pointer to the WLAN DAL context
11161 pEventData: pointer to the event information structure
11162
Jeff Johnson295189b2012-06-20 16:38:30 -070011163 @see
11164 @return Result of the function call
11165*/
11166WDI_Status
11167WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011168(
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 WDI_ControlBlockType* pWDICtx,
11170 WDI_EventInfoType* pEventData
11171)
11172{
11173 WDI_DelBAReqParamsType* pwdiDelBAParams;
11174 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011175 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011176 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011177 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011178 wpt_uint16 usDataOffset = 0;
11179 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011180 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011181 wpt_macAddr macBSSID;
11182 tDelBAParams halDelBAparam;
11183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11184
11185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011187 -------------------------------------------------------------------------*/
11188 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11189 ( NULL == pEventData->pCBfnc ))
11190 {
11191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011192 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011195 }
11196
11197 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11198 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11199 /*-------------------------------------------------------------------------
11200 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011201 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011202 -------------------------------------------------------------------------*/
11203 wpalMutexAcquire(&pWDICtx->wptMutex);
11204
11205 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011206 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011207 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011208 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11209 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 &macBSSID))
11211 {
11212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011213 "This station does not exist in the WDI Station Table %d",
11214 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011217 }
11218
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011220
Jeff Johnsone7245742012-09-05 17:12:55 -070011221 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011222 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11224 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11225 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011226
11227 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011228 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011229 }
11230
11231 /*------------------------------------------------------------------------
11232 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 ------------------------------------------------------------------------*/
11235 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11236 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11238 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11239 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011240
Jeff Johnsone7245742012-09-05 17:12:55 -070011241 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011242 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011243 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011244 }
11245
11246 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011247 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011248 sizeof(halDelBAparam),
11249 &pSendBuffer, &usDataOffset, &usSendSize))||
11250 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11251 {
11252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011253 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011254 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011257 }
11258
11259 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11260 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11261 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11262
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 wpalMemoryCopy( pSendBuffer+usDataOffset,
11264 &halDelBAparam,
11265 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011266
11267 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011269
11270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011271 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11274 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011275}/*WDI_ProcessDelBAReq*/
11276
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011277#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011278
11279WDI_Status
11280WDI_ProcessTSMStatsReq
11281(
11282 WDI_ControlBlockType* pWDICtx,
11283 WDI_EventInfoType* pEventData
11284)
11285{
11286 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11287 WDI_TsmRspCb wdiTSMRspCb;
11288 wpt_uint8 ucCurrentBSSSesIdx = 0;
11289 WDI_BSSSessionType* pBSSSes = NULL;
11290 wpt_uint8* pSendBuffer = NULL;
11291 wpt_uint16 usDataOffset = 0;
11292 wpt_uint16 usSendSize = 0;
11293 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11294 tTsmStatsParams halTsmStatsReqParams = {0};
11295
11296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11297
11298 /*-------------------------------------------------------------------------
11299 Sanity check
11300 -------------------------------------------------------------------------*/
11301 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11302 ( NULL == pEventData->pCBfnc ))
11303 {
11304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011306 WDI_ASSERT(0);
11307 return WDI_STATUS_E_FAILURE;
11308 }
11309
11310 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11311 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11312 /*-------------------------------------------------------------------------
11313 Check to see if we are in the middle of an association, if so queue, if
11314 not it means it is free to process request
11315 -------------------------------------------------------------------------*/
11316 wpalMutexAcquire(&pWDICtx->wptMutex);
11317
11318 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11319 if ( NULL == pBSSSes )
11320 {
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(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011324
11325 wpalMutexRelease(&pWDICtx->wptMutex);
11326 return WDI_STATUS_E_NOT_ALLOWED;
11327 }
11328
11329 /*------------------------------------------------------------------------
11330 Check if this BSS is being currently processed or queued,
11331 if queued - queue the new request as well
11332 ------------------------------------------------------------------------*/
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,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011336 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011338
11339 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11340 wpalMutexRelease(&pWDICtx->wptMutex);
11341 return wdiStatus;
11342 }
11343
11344 wpalMutexRelease(&pWDICtx->wptMutex);
11345 /*-----------------------------------------------------------------------
11346 Get message buffer
11347 ! TO DO : proper conversion into the HAL Message Request Format
11348 -----------------------------------------------------------------------*/
11349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11350 sizeof(halTsmStatsReqParams),
11351 &pSendBuffer, &usDataOffset, &usSendSize))||
11352 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11353 {
11354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011355 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011356 pEventData, pwdiTSMParams, wdiTSMRspCb);
11357 WDI_ASSERT(0);
11358 return WDI_STATUS_E_FAILURE;
11359 }
11360
11361 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11362 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11363 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11364 WDI_MAC_ADDR_LEN);
11365 wpalMemoryCopy( pSendBuffer+usDataOffset,
11366 &halTsmStatsReqParams,
11367 sizeof(halTsmStatsReqParams));
11368
11369 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11370 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11371
11372 /*-------------------------------------------------------------------------
11373 Send TSM Stats Request to HAL
11374 -------------------------------------------------------------------------*/
11375 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11376 wdiTSMRspCb, pEventData->pUserData,
11377 WDI_TSM_STATS_RESP);
11378}/*WDI_ProcessTSMStatsReq*/
11379
11380#endif
11381
11382
11383/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011385 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011386
11387 @param pWDICtx: pointer to the WLAN DAL context
11388 pEventData: pointer to the event information structure
11389
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 @see
11391 @return Result of the function call
11392*/
11393WDI_Status
11394WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011395(
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 WDI_ControlBlockType* pWDICtx,
11397 WDI_EventInfoType* pEventData
11398)
11399{
11400 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11401 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011403 wpt_uint16 usDataOffset = 0;
11404 wpt_uint16 usSendSize = 0;
11405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11406
11407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011408 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011409 -------------------------------------------------------------------------*/
11410 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11411 ( NULL == pEventData->pCBfnc ))
11412 {
11413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011414 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011417 }
11418
11419 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11420 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11421 /*-----------------------------------------------------------------------
11422 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11427 &pSendBuffer, &usDataOffset, &usSendSize))||
11428 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11429 {
11430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011431 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011432 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 }
11436
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 wpalMemoryCopy( pSendBuffer+usDataOffset,
11438 &pwdiFlushAcParams->wdiFlushAcInfo,
11439 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011440
11441 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011442 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011443
11444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011445 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011447 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11448 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011449}/*WDI_ProcessFlushAcReq*/
11450
11451/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011452 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011454
11455 @param pWDICtx: pointer to the WLAN DAL context
11456 pEventData: pointer to the event information structure
11457
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 @see
11459 @return Result of the function call
11460*/
11461WDI_Status
11462WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011463(
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 WDI_ControlBlockType* pWDICtx,
11465 WDI_EventInfoType* pEventData
11466)
11467{
11468 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11469 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011470 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011471 wpt_uint16 usDataOffset = 0;
11472 wpt_uint16 usSendSize = 0;
11473
11474 tBtAmpEventMsg haltBtAmpEventMsg;
11475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11476
11477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 -------------------------------------------------------------------------*/
11480 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11481 ( NULL == pEventData->pCBfnc ))
11482 {
11483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011487 }
11488
11489 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11490 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11491 /*-----------------------------------------------------------------------
11492 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11497 &pSendBuffer, &usDataOffset, &usSendSize))||
11498 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11499 {
11500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011501 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011502 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011505 }
11506
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011509 wpalMemoryCopy( pSendBuffer+usDataOffset,
11510 &haltBtAmpEventMsg.btAmpEventParams,
11511 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011512
11513 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011515
11516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11520 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011521}/*WDI_ProcessBtAmpEventReq*/
11522
11523/**
11524 @brief Process Add STA self Request function (called when Main FSM
11525 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011526
11527 @param pWDICtx: pointer to the WLAN DAL context
11528 pEventData: pointer to the event information structure
11529
Jeff Johnson295189b2012-06-20 16:38:30 -070011530 @see
11531 @return Result of the function call
11532*/
11533WDI_Status
11534WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011535(
Jeff Johnson295189b2012-06-20 16:38:30 -070011536 WDI_ControlBlockType* pWDICtx,
11537 WDI_EventInfoType* pEventData
11538)
11539{
11540 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11541 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011542 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 wpt_uint16 usDataOffset = 0;
11544 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011545 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11547
11548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 -------------------------------------------------------------------------*/
11551 if (( NULL == pEventData ) ||
11552 ( NULL == pEventData->pEventData) ||
11553 ( NULL == pEventData->pCBfnc))
11554 {
11555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011559 }
11560
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11565 /*-----------------------------------------------------------------------
11566 Get message buffer
11567 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011568 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11569 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011570 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011572 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 {
11574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011575 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011579 }
11580
11581 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011582 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011583 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11584
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011586 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11587 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11588 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11589 {
11590 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11591 }
11592 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11593 VOS_P2P_CLIENT_MODE) ||
11594 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11595 VOS_P2P_DEVICE))
11596 {
11597 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11598 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011599 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011600 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011601
11602 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011603 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011604
11605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011607 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11609 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11610 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011611}/*WDI_ProcessAddSTASelfReq*/
11612
11613
11614
11615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011618
11619 @param pWDICtx: pointer to the WLAN DAL context
11620 pEventData: pointer to the event information structure
11621
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 @see
11623 @return Result of the function call
11624*/
11625WDI_Status
11626WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011627(
Jeff Johnson295189b2012-06-20 16:38:30 -070011628 WDI_ControlBlockType* pWDICtx,
11629 WDI_EventInfoType* pEventData
11630)
11631{
11632 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11633 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 wpt_uint16 usDataOffset = 0;
11636 wpt_uint16 usSendSize = 0;
11637 tDelStaSelfParams halSetDelSelfSTAParams;
11638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11639
11640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011642 -------------------------------------------------------------------------*/
11643 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11644 ( NULL == pEventData->pCBfnc ))
11645 {
11646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 }
11651
Jeff Johnsone7245742012-09-05 17:12:55 -070011652 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011653 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11654 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11655
11656 /*-----------------------------------------------------------------------
11657 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11662 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011664 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11665 {
11666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011667 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011668 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 }
11672
Jeff Johnsone7245742012-09-05 17:12:55 -070011673 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011674 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11675
Jeff Johnsone7245742012-09-05 17:12:55 -070011676 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11677 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011678
11679 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011680 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011681
11682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011685 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11686 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 WDI_DEL_STA_SELF_RESP);
11688
11689}
11690
Jeff Johnsone7245742012-09-05 17:12:55 -070011691#ifdef FEATURE_OEM_DATA_SUPPORT
11692/**
11693 @brief Process Start Oem Data Request function (called when Main
11694 FSM allows it)
11695
11696 @param pWDICtx: pointer to the WLAN DAL context
11697 pEventData: pointer to the event information structure
11698
11699 @see
11700 @return Result of the function call
11701*/
11702WDI_Status
11703WDI_ProcessStartOemDataReq
11704(
11705 WDI_ControlBlockType* pWDICtx,
11706 WDI_EventInfoType* pEventData
11707)
11708{
11709 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11710 WDI_oemDataRspCb wdiOemDataRspCb;
11711 wpt_uint8* pSendBuffer = NULL;
11712 wpt_uint16 usDataOffset = 0;
11713 wpt_uint16 usSendSize = 0;
11714 wpt_uint16 reqLen;
11715 tStartOemDataReqParams* halStartOemDataReqParams;
11716
11717 /*-------------------------------------------------------------------------
11718 Sanity check
11719 -------------------------------------------------------------------------*/
11720 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11721 ( NULL == pEventData->pCBfnc ))
11722 {
11723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011724 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011725 WDI_ASSERT(0);
11726 return WDI_STATUS_E_FAILURE;
11727 }
11728
11729 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11730 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11731
11732 /*-----------------------------------------------------------------------
11733 Get message buffer
11734 -----------------------------------------------------------------------*/
11735
11736 reqLen = sizeof(tStartOemDataReqParams);
11737
11738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11739 WDI_START_OEM_DATA_REQ, reqLen,
11740 &pSendBuffer, &usDataOffset, &usSendSize))||
11741 (usSendSize < (usDataOffset + reqLen)))
11742 {
11743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011744 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011745 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11746 WDI_ASSERT(0);
11747 return WDI_STATUS_E_FAILURE;
11748 }
11749
11750 //copying WDI OEM DATA REQ PARAMS to shared memory
11751 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11752
11753 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11754 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11755
11756 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11757 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11758
11759 /*-------------------------------------------------------------------------
11760 Send Start Request to HAL
11761 -------------------------------------------------------------------------*/
11762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11763 wdiOemDataRspCb, pEventData->pUserData,
11764 WDI_START_OEM_DATA_RESP);
11765}/*WDI_ProcessStartOemDataReq*/
11766#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011767
11768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011769 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011770 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011771
11772 @param pWDICtx: pointer to the WLAN DAL context
11773 pEventData: pointer to the event information structure
11774
Jeff Johnson295189b2012-06-20 16:38:30 -070011775 @see
11776 @return Result of the function call
11777*/
11778WDI_Status
11779WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011780(
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 WDI_ControlBlockType* pWDICtx,
11782 WDI_EventInfoType* pEventData
11783)
11784{
11785 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11786 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011787 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011788 wpt_uint16 usDataOffset = 0;
11789 wpt_uint16 usSendSize = 0;
11790 tHalWlanHostResumeReqParam halResumeReqParams;
11791
11792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11793
11794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011796 -------------------------------------------------------------------------*/
11797 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11798 ( NULL == pEventData->pCBfnc ))
11799 {
11800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011801 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 }
11805
11806 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11807 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11808
11809 /*-----------------------------------------------------------------------
11810 Get message buffer
11811 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011813 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11814 &pSendBuffer, &usDataOffset, &usSendSize))||
11815 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11816 {
11817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011818 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011819 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 }
11823
Jeff Johnsone7245742012-09-05 17:12:55 -070011824 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011825 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011826
11827 wpalMemoryCopy( pSendBuffer+usDataOffset,
11828 &halResumeReqParams,
11829 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011830
11831 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011832 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011833
11834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011836 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11838 wdiHostResumeRspCb, pEventData->pUserData,
11839 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011840}/*WDI_ProcessHostResumeReq*/
11841
11842/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011843 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011844 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011845
11846 @param pWDICtx: pointer to the WLAN DAL context
11847 pEventData: pointer to the event information structure
11848
Jeff Johnson295189b2012-06-20 16:38:30 -070011849 @see
11850 @return Result of the function call
11851*/
11852WDI_Status
11853WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011854(
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 WDI_ControlBlockType* pWDICtx,
11856 WDI_EventInfoType* pEventData
11857)
11858{
11859 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11860 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011861 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011862 wpt_uint16 usDataOffset = 0;
11863 wpt_uint16 usSendSize = 0;
11864 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11866
11867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011869 -------------------------------------------------------------------------*/
11870 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11871 ( NULL == pEventData->pCBfnc ))
11872 {
11873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011874 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011877 }
11878
11879 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11880 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011881
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 /*-----------------------------------------------------------------------
11883 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011884 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 sizeof(halTxPerTrackingReqParam),
11888 &pSendBuffer, &usDataOffset, &usSendSize))||
11889 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11890 {
11891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011892 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011893 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011896 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011897
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11899 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11900 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11901 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011902
11903 wpalMemoryCopy( pSendBuffer+usDataOffset,
11904 &halTxPerTrackingReqParam,
11905 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011906
11907 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011909
11910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11914 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011915}/*WDI_ProcessSetTxPerTrackingReq*/
11916
11917/*=========================================================================
11918 Indications
11919=========================================================================*/
11920
11921/**
11922 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011923
11924 @param pWDICtx: pointer to the WLAN DAL context
11925 pEventData: pointer to the event information structure
11926
Jeff Johnson295189b2012-06-20 16:38:30 -070011927 @see
11928 @return Result of the function call
11929*/
11930WDI_Status
11931WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011932(
Jeff Johnson295189b2012-06-20 16:38:30 -070011933 WDI_ControlBlockType* pWDICtx,
11934 WDI_EventInfoType* pEventData
11935)
11936{
11937 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011938 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011939 wpt_uint16 usDataOffset = 0;
11940 wpt_uint16 usSendSize = 0;
11941 WDI_Status wdiStatus;
11942 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11944
11945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011946 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 -------------------------------------------------------------------------*/
11948 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11949 {
11950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011951 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011954 }
11955
11956 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11957
11958 /*-----------------------------------------------------------------------
11959 Get message buffer
11960 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11962 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 sizeof(halWlanSuspendIndparams),
11964 &pSendBuffer, &usDataOffset, &usSendSize))||
11965 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11966 {
11967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11968 "Unable to get send buffer in Suspend Ind ");
11969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011971 }
11972
11973 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11974 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11975
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011977 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011978
Jeff Johnsone7245742012-09-05 17:12:55 -070011979 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11980 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011981
11982 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 -------------------------------------------------------------------------*/
11985 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011987
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11990}/*WDI_ProcessHostSuspendInd*/
11991
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011992
11993
11994/**
11995 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11996
11997 @param pWDICtx: pointer to the WLAN DAL context
11998 pEventData: pointer to the event information structure
11999
12000 @see
12001 @return Result of the function call
12002*/
12003WDI_Status
12004WDI_ProcessTrafficStatsInd
12005(
12006 WDI_ControlBlockType* pWDICtx,
12007 WDI_EventInfoType* pEventData
12008)
12009{
12010 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
12011 wpt_uint8* pSendBuffer = NULL;
12012 wpt_uint16 usDataOffset = 0;
12013 wpt_uint16 usSendSize = 0;
12014 WDI_Status wdiStatus;
12015 tStatsClassBIndParams* pStatsClassBIndParams;
12016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12017
12018 /*-------------------------------------------------------------------------
12019 Sanity check
12020 -------------------------------------------------------------------------*/
12021 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12022 {
12023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12024 "%s: Invalid parameters in Traffic Stats ind",__func__);
12025 WDI_ASSERT(0);
12026 return WDI_STATUS_E_FAILURE;
12027 }
12028
12029 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
12030
12031 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
12032 {
12033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12034 "%s: Invalid parameters in Traffic Stats ind",__func__);
12035 WDI_ASSERT(0);
12036 return WDI_STATUS_E_FAILURE;
12037 }
12038
12039 /*-----------------------------------------------------------------------
12040 Get message buffer
12041 -----------------------------------------------------------------------*/
12042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12043 WDI_TRAFFIC_STATS_IND,
12044 sizeof(tStatsClassBIndParams),
12045 &pSendBuffer, &usDataOffset, &usSendSize))||
12046 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
12047 {
12048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12049 "Unable to get send buffer in Traffic Stats Ind ");
12050 WDI_ASSERT(0);
12051 return WDI_STATUS_E_FAILURE;
12052 }
12053
12054 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12055
12056 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12057
12058 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12059 pTrafficStatsIndParams->pTrafficStats,
12060 pTrafficStatsIndParams->length);
12061
12062 /*-------------------------------------------------------------------------
12063 Send Suspend Request to HAL
12064 -------------------------------------------------------------------------*/
12065 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12066 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12067
12068 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12069 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12070}/*WDI_ProcessTrafficStatsInd*/
12071
Chet Lanctot186b5732013-03-18 10:26:30 -070012072#ifdef WLAN_FEATURE_11W
12073/**
12074 @brief Process Exclude Unencrypted Indications function (called
12075 when Main FSM allows it)
12076
12077 @param pWDICtx: pointer to the WLAN DAL context
12078 pEventData: pointer to the event information structure
12079
12080 @see
12081 @return Result of the function call
12082*/
12083WDI_Status
12084WDI_ProcessExcludeUnencryptInd
12085(
12086 WDI_ControlBlockType* pWDICtx,
12087 WDI_EventInfoType* pEventData
12088)
12089{
12090 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12091 wpt_uint8* pSendBuffer = NULL;
12092 wpt_uint16 usDataOffset = 0;
12093 wpt_uint16 usSendSize = 0;
12094 WDI_Status wdiStatus;
12095 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12097
12098 /*-------------------------------------------------------------------------
12099 Sanity check
12100 -------------------------------------------------------------------------*/
12101 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12102 {
12103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12104 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12105 WDI_ASSERT(0);
12106 return WDI_STATUS_E_FAILURE;
12107 }
12108
12109 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12110
12111 /*-----------------------------------------------------------------------
12112 Get message buffer
12113 -----------------------------------------------------------------------*/
12114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12115 WDI_EXCLUDE_UNENCRYPTED_IND,
12116 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12117 &pSendBuffer, &usDataOffset, &usSendSize))||
12118 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12119 {
12120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12121 "Unable to get send buffer in Exclude Unencrypted Ind ");
12122 WDI_ASSERT(0);
12123 return WDI_STATUS_E_FAILURE;
12124 }
12125
12126 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12127
12128 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12129
12130 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12131 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12132
12133 /*-------------------------------------------------------------------------
12134 Send Suspend Request to HAL
12135 -------------------------------------------------------------------------*/
12136 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12137 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12138
12139 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12140 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12141}/*WDI_ProcessExcludeUnencryptInd*/
12142#endif
12143
Yue Mab9c86f42013-08-14 15:59:08 -070012144/**
12145 @brief Process Add Periodic Tx Pattern Indication function (called when
12146 Main FSM allows it)
12147
12148 @param pWDICtx: pointer to the WLAN DAL context
12149 pEventData: pointer to the event information structure
12150
12151 @see
12152 @return Result of the function call
12153*/
12154WDI_Status
12155WDI_ProcessAddPeriodicTxPtrnInd
12156(
12157 WDI_ControlBlockType* pWDICtx,
12158 WDI_EventInfoType* pEventData
12159)
12160{
12161 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12162 wpt_uint8* pSendBuffer = NULL;
12163 wpt_uint16 usDataOffset = 0;
12164 wpt_uint16 usSendSize = 0;
12165 WDI_Status wdiStatus;
12166 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12167 wpt_uint8 selfStaIdx = 0;
12168
12169 /*-------------------------------------------------------------------------
12170 Sanity check
12171 -------------------------------------------------------------------------*/
12172 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12173 {
12174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12175 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12176 WDI_ASSERT(0);
12177 return WDI_STATUS_E_FAILURE;
12178 }
12179
12180 pAddPeriodicTxPtrnParams =
12181 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12182
12183 /*------------------------------------------------------------------------
12184 Get message buffer
12185 ------------------------------------------------------------------------*/
12186 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12187 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12188 &pSendBuffer, &usDataOffset, &usSendSize))||
12189 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12190 {
12191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12192 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12193 __func__);
12194 WDI_ASSERT(0);
12195 return WDI_STATUS_E_FAILURE;
12196 }
12197
12198 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12199
12200 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12201 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12202 &selfStaIdx))
12203 {
12204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12205 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012206 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012207
12208 return WDI_STATUS_E_FAILURE;
12209 }
12210
12211 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12212 halAddPeriodicTxPtrn->ucPtrnId =
12213 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12214 halAddPeriodicTxPtrn->usPtrnSize =
12215 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12216 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12217 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12218
12219 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12220 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12221 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12222
12223 /*-------------------------------------------------------------------------
12224 Send Indication to HAL
12225 -------------------------------------------------------------------------*/
12226 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12227 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12228
12229 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12230
12231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12232 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12233
12234 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12235} /* WDI_ProcessAddPeriodicTxPtrnInd */
12236
12237/**
12238 @brief Process Delete Periodic Tx Pattern Indication function (called when
12239 Main FSM allows it)
12240
12241 @param pWDICtx: pointer to the WLAN DAL context
12242 pEventData: pointer to the event information structure
12243
12244 @see
12245 @return Result of the function call
12246*/
12247WDI_Status
12248WDI_ProcessDelPeriodicTxPtrnInd
12249(
12250 WDI_ControlBlockType* pWDICtx,
12251 WDI_EventInfoType* pEventData
12252)
12253{
12254 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12255 wpt_uint8* pSendBuffer = NULL;
12256 wpt_uint16 usDataOffset = 0;
12257 wpt_uint16 usSendSize = 0;
12258 WDI_Status wdiStatus;
12259 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12260 wpt_uint8 selfStaIdx = 0;
12261
12262 /*-------------------------------------------------------------------------
12263 Sanity check
12264 -------------------------------------------------------------------------*/
12265 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12266 {
12267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12268 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12269 WDI_ASSERT(0);
12270 return WDI_STATUS_E_FAILURE;
12271 }
12272
12273 pDelPeriodicTxPtrnParams =
12274 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12275
12276 /*------------------------------------------------------------------------
12277 Get message buffer
12278 ------------------------------------------------------------------------*/
12279 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12280 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12281 &pSendBuffer, &usDataOffset, &usSendSize))||
12282 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12283 {
12284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12285 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12286 __func__);
12287 WDI_ASSERT(0);
12288 return WDI_STATUS_E_FAILURE;
12289 }
12290
12291 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12292
12293 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12294 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12295 &selfStaIdx))
12296 {
12297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12298 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012299 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012300
12301 return WDI_STATUS_E_FAILURE;
12302 }
12303
12304 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12305 halDelPeriodicTxPtrn->uPatternIdBitmap =
12306 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12307
12308 /*-------------------------------------------------------------------------
12309 Send Indication to HAL
12310 -------------------------------------------------------------------------*/
12311 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12312 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12313
12314 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12315
12316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12317 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12318
12319 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12320} /* WDI_ProcessDelPeriodicTxPtrnInd */
12321
Jeff Johnson295189b2012-06-20 16:38:30 -070012322/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012324==========================================================================*/
12325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012328
12329 @param pWDICtx: pointer to the WLAN DAL context
12330 pEventData: pointer to the event information structure
12331
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 @see
12333 @return Result of the function call
12334*/
12335WDI_Status
12336WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012337(
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 WDI_ControlBlockType* pWDICtx,
12339 WDI_EventInfoType* pEventData
12340)
12341{
12342 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12343 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012344 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012345 wpt_uint16 usDataOffset = 0;
12346 wpt_uint16 usSendSize = 0;
12347 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12349
12350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012352 -------------------------------------------------------------------------*/
12353 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12354 ( NULL == pEventData->pCBfnc ))
12355 {
12356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 }
12361
12362 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12363 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12364 /*-----------------------------------------------------------------------
12365 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012367 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012368 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012369 sizeof(halSwitchChannelReq.switchChannelParams),
12370 &pSendBuffer, &usDataOffset, &usSendSize))||
12371 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12372 {
12373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012374 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 }
12379
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012382#ifndef WLAN_FEATURE_VOWIFI
12383 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12385#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12388
12389#ifdef WLAN_FEATURE_VOWIFI
12390 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12393 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12394 WDI_MAC_ADDR_LEN);
12395 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12396 pwdiSwitchChParams->wdiChInfo.macBSSId,
12397 WDI_MAC_ADDR_LEN);
12398#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 wpalMemoryCopy( pSendBuffer+usDataOffset,
12400 &halSwitchChannelReq.switchChannelParams,
12401 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012402
12403 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012405
12406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12410 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012411}/*WDI_ProcessChannelSwitchReq*/
12412
12413/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012414 @brief Process Channel Switch Request function (called when
12415 Main FSM allows it)
12416
12417 @param pWDICtx: pointer to the WLAN DAL context
12418 pEventData: pointer to the event information structure
12419
12420 @see
12421 @return Result of the function call
12422*/
12423WDI_Status WDI_ProcessChannelSwitchReq_V1
12424(
12425 WDI_ControlBlockType* pWDICtx,
12426 WDI_EventInfoType* pEventData
12427)
12428{
12429 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12430 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12431 wpt_uint8* pSendBuffer = NULL;
12432 wpt_uint16 usDataOffset = 0;
12433 wpt_uint16 usSendSize = 0;
12434 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12436
12437 /*-------------------------------------------------------------------------
12438 Sanity check
12439 -------------------------------------------------------------------------*/
12440 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12441 ( NULL == pEventData->pCBfnc ))
12442 {
12443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12444 "%s: Invalid parameters", __func__);
12445 WDI_ASSERT(0);
12446 return WDI_STATUS_E_FAILURE;
12447 }
12448
12449 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12450 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12451 /*-----------------------------------------------------------------------
12452 Get message buffer
12453 ! TO DO : proper conversion into the HAL Message Request Format
12454 -----------------------------------------------------------------------*/
12455 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12456 WDI_CH_SWITCH_REQ_V1,
12457 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12458 &pSendBuffer, &usDataOffset, &usSendSize))||
12459 ( usSendSize < (usDataOffset +
12460 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12461 {
12462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12463 "Unable to get send buffer in channel switch req %p %p %p",
12464 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12465 WDI_ASSERT(0);
12466 return WDI_STATUS_E_FAILURE;
12467 }
12468
12469 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12470 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12471
12472 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12473 pwdiSwitchChParams->wdiChInfo.ucChannel;
12474#ifndef WLAN_FEATURE_VOWIFI
12475 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12476 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12477#endif
12478 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12479 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12480
12481#ifdef WLAN_FEATURE_VOWIFI
12482 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12483 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12484 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12485 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12486 WDI_MAC_ADDR_LEN);
12487 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12488 pwdiSwitchChParams->wdiChInfo.macBSSId,
12489 WDI_MAC_ADDR_LEN);
12490#endif
12491 wpalMemoryCopy( pSendBuffer+usDataOffset,
12492 &halSwitchChannelReq.switchChannelParams_V1,
12493 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12494
12495 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12496 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12497
12498 /*-------------------------------------------------------------------------
12499 Send Switch Channel Request to HAL
12500 -------------------------------------------------------------------------*/
12501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12502 wdiSwitchChRspCb, pEventData->pUserData,
12503 WDI_CH_SWITCH_RESP_V1);
12504}/*WDI_ProcessChannelSwitchReq_V1*/
12505
12506/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012509
12510 @param pWDICtx: pointer to the WLAN DAL context
12511 pEventData: pointer to the event information structure
12512
Jeff Johnson295189b2012-06-20 16:38:30 -070012513 @see
12514 @return Result of the function call
12515*/
12516WDI_Status
12517WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012518(
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 WDI_ControlBlockType* pWDICtx,
12520 WDI_EventInfoType* pEventData
12521)
12522{
12523 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12524 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012526 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012527 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012528 wpt_uint16 usDataOffset = 0;
12529 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 tConfigStaReqMsg halConfigStaReqMsg;
12533 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12535
12536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012538 -------------------------------------------------------------------------*/
12539 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12540 ( NULL == pEventData->pCBfnc ))
12541 {
12542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012546 }
12547
Abhishek Singh6927fa02014-06-27 17:19:55 +053012548 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12550 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12551 /*-------------------------------------------------------------------------
12552 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012553 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 -------------------------------------------------------------------------*/
12555 wpalMutexAcquire(&pWDICtx->wptMutex);
12556
12557 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012558 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12561 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12562 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012563
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12567 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12568 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012569
12570 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 }
12573
12574 /*------------------------------------------------------------------------
12575 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 ------------------------------------------------------------------------*/
12578 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12579 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12581 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12582 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012583
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 }
12588
12589 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012590
12591 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12592#ifdef WLAN_FEATURE_11AC
12593 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012594 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 else
12596#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012597 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012598
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 /*-----------------------------------------------------------------------
12600 Get message buffer
12601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12603 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012604 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 {
12607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012608 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012609 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 }
12613
12614 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012615 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012616 &pwdiConfigSTAParams->wdiReqInfo);
12617
12618 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12619 {
12620 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 WDI_STATableFindStaidByAddr(pWDICtx,
12623 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012624 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012625 {
12626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012627 MAC_ADDRESS_STR
12628 ": This station does not exist in the WDI Station Table",
12629 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012631 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 }
12634 }
12635 else
12636 {
12637 /* Need to fill in the STA Index to invalid, since at this point we have not
12638 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012639 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 }
12641
12642 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012644
Jeff Johnsone7245742012-09-05 17:12:55 -070012645 wpalMemoryCopy( pSendBuffer+usDataOffset,
12646 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012647 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012648
12649 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012651
Jeff Johnsone7245742012-09-05 17:12:55 -070012652 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12653 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 sizeof(pWDICtx->wdiCachedConfigStaReq));
12655
12656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12660 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012661}/*WDI_ProcessConfigStaReq*/
12662
12663
12664/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012665 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012666 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012667
12668 @param pWDICtx: pointer to the WLAN DAL context
12669 pEventData: pointer to the event information structure
12670
Jeff Johnson295189b2012-06-20 16:38:30 -070012671 @see
12672 @return Result of the function call
12673*/
12674WDI_Status
12675WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012676(
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 WDI_ControlBlockType* pWDICtx,
12678 WDI_EventInfoType* pEventData
12679)
12680{
12681 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12682 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012683 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012684 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012686 wpt_uint16 usDataOffset = 0;
12687 wpt_uint16 usSendSize = 0;
12688 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012689 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12691
12692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 -------------------------------------------------------------------------*/
12695 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12696 ( NULL == pEventData->pCBfnc ))
12697 {
12698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 }
12703
12704 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12705 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12706 /*-------------------------------------------------------------------------
12707 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 -------------------------------------------------------------------------*/
12710 wpalMutexAcquire(&pWDICtx->wptMutex);
12711
12712 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012715 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12716 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12717 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012718
Jeff Johnsone7245742012-09-05 17:12:55 -070012719 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012720 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012722 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12723 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 }
12725 else
12726 {
12727 /*------------------------------------------------------------------------
12728 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012729 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012730 ------------------------------------------------------------------------*/
12731 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12732 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12734 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12735 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12736
12737 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012738 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 }
12741 }
12742 /* If the link is set to enter IDLE - the Session allocated for this BSS
12743 will be deleted on the Set Link State response coming from HAL
12744 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012745 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12747
12748 wpalMutexRelease(&pWDICtx->wptMutex);
12749 /*-----------------------------------------------------------------------
12750 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012753
12754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 sizeof(halLinkStateReqMsg),
12756 &pSendBuffer, &usDataOffset, &usSendSize))||
12757 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12758 {
12759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012760 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 }
12765
12766 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12767 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12768
12769 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12770 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12771
Jeff Johnsone7245742012-09-05 17:12:55 -070012772 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12774
Jeff Johnsone7245742012-09-05 17:12:55 -070012775 wpalMemoryCopy( pSendBuffer+usDataOffset,
12776 &halLinkStateReqMsg,
12777 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012778
12779 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012781
12782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012783 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12786 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012787}/*WDI_ProcessSetLinkStateReq*/
12788
12789
12790/**
12791 @brief Process Get Stats Request function (called when Main FSM
12792 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012793
12794 @param pWDICtx: pointer to the WLAN DAL context
12795 pEventData: pointer to the event information structure
12796
Jeff Johnson295189b2012-06-20 16:38:30 -070012797 @see
12798 @return Result of the function call
12799*/
12800WDI_Status
12801WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012802(
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 WDI_ControlBlockType* pWDICtx,
12804 WDI_EventInfoType* pEventData
12805)
12806{
12807 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12808 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012809 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012810 wpt_uint16 usDataOffset = 0;
12811 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 WDI_BSSSessionType* pBSSSes = NULL;
12814 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 tHalStatsReqMsg halStatsReqMsg;
12817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12818
12819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 -------------------------------------------------------------------------*/
12822 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12823 ( NULL == pEventData->pCBfnc ) )
12824 {
12825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012829 }
12830
12831 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12832 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12833
12834 /*-------------------------------------------------------------------------
12835 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012836 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 -------------------------------------------------------------------------*/
12838 wpalMutexAcquire(&pWDICtx->wptMutex);
12839
12840 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012841 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012843 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12844 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 &macBSSID))
12846 {
12847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012848 "This station does not exist in the WDI Station Table %d",
12849 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 }
12853
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12855 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12858 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12859 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012860
12861 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 }
12864
12865 /*------------------------------------------------------------------------
12866 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 ------------------------------------------------------------------------*/
12869 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12870 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12872 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12873 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012874
Jeff Johnsone7245742012-09-05 17:12:55 -070012875 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012877 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 }
12879
12880
12881 wpalMutexRelease(&pWDICtx->wptMutex);
12882
12883 /*-----------------------------------------------------------------------
12884 Get message buffer
12885 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 sizeof(halStatsReqMsg.statsReqParams),
12888 &pSendBuffer, &usDataOffset, &usSendSize))||
12889 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12890 {
12891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012892 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012896 }
12897
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 wpalMemoryCopy( pSendBuffer+usDataOffset,
12903 &halStatsReqMsg.statsReqParams,
12904 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012905
12906 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012908
12909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12913 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012914}/*WDI_ProcessGetStatsReq*/
12915
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012916#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012917/**
12918 @brief Process Get Roam Rssi Request function (called when Main FSM
12919 allows it)
12920
12921 @param pWDICtx: pointer to the WLAN DAL context
12922 pEventData: pointer to the event information structure
12923
12924 @see
12925 @return Result of the function call
12926*/
12927WDI_Status
12928WDI_ProcessGetRoamRssiReq
12929(
12930 WDI_ControlBlockType* pWDICtx,
12931 WDI_EventInfoType* pEventData
12932)
12933{
12934 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12935 WDI_GetStatsRspCb wdiGetStatsRspCb;
12936 wpt_uint8* pSendBuffer = NULL;
12937 wpt_uint16 usDataOffset = 0;
12938 wpt_uint16 usSendSize = 0;
12939 wpt_uint8 ucCurrentBSSSesIdx = 0;
12940 WDI_BSSSessionType* pBSSSes = NULL;
12941 wpt_macAddr macBSSID;
12942 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12943 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12945 /*-------------------------------------------------------------------------
12946 Sanity check
12947 -------------------------------------------------------------------------*/
12948 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12949 ( NULL == pEventData->pCBfnc ) )
12950 {
12951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12952 "%s: Invalid parameters", __func__);
12953 WDI_ASSERT(0);
12954 return WDI_STATUS_E_FAILURE;
12955 }
12956
12957 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12958 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12959
12960 /*-------------------------------------------------------------------------
12961 Check to see if we are in the middle of an association, if so queue, if
12962 not it means it is free to process request
12963 -------------------------------------------------------------------------*/
12964 wpalMutexAcquire(&pWDICtx->wptMutex);
12965
12966 /*------------------------------------------------------------------------
12967 Find the BSS for which the request is made
12968 ------------------------------------------------------------------------*/
12969 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12970 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12971 &macBSSID))
12972 {
12973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012974 "This station does not exist in the WDI Station Table %d",
12975 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012976 wpalMutexRelease(&pWDICtx->wptMutex);
12977 return WDI_STATUS_E_FAILURE;
12978 }
12979
12980 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12981 if ( NULL == pBSSSes )
12982 {
12983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12984 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12985 __func__, MAC_ADDR_ARRAY(macBSSID));
12986
12987 wpalMutexRelease(&pWDICtx->wptMutex);
12988 return WDI_STATUS_E_NOT_ALLOWED;
12989 }
12990
12991 /*------------------------------------------------------------------------
12992 Check if this BSS is being currently processed or queued,
12993 if queued - queue the new request as well
12994 ------------------------------------------------------------------------*/
12995 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12996 {
12997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12998 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12999 __func__, MAC_ADDR_ARRAY(macBSSID));
13000
13001 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
13002 wpalMutexRelease(&pWDICtx->wptMutex);
13003 return wdiStatus;
13004 }
13005
13006 wpalMutexRelease(&pWDICtx->wptMutex);
13007
13008 /*-----------------------------------------------------------------------
13009 Get message buffer
13010 -----------------------------------------------------------------------*/
13011 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
13012 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
13013 &pSendBuffer, &usDataOffset, &usSendSize))||
13014 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
13015 {
13016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013017 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013018 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
13019 WDI_ASSERT(0);
13020 return WDI_STATUS_E_FAILURE;
13021 }
13022
13023 halRssiRoamReqMsg.roamRssiReqParams.staId =
13024 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
13025 wpalMemoryCopy( pSendBuffer+usDataOffset,
13026 &halRssiRoamReqMsg.roamRssiReqParams,
13027 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
13028
13029 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
13030 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
13031
13032 /*-------------------------------------------------------------------------
13033 Send Get STA Request to HAL
13034 -------------------------------------------------------------------------*/
13035 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13036 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
13037}/*WDI_ProcessGetRoamRssiReq*/
13038#endif
13039
Jeff Johnson295189b2012-06-20 16:38:30 -070013040/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013043
13044 @param pWDICtx: pointer to the WLAN DAL context
13045 pEventData: pointer to the event information structure
13046
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 @see
13048 @return Result of the function call
13049*/
13050WDI_Status
13051WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013052(
Jeff Johnson295189b2012-06-20 16:38:30 -070013053 WDI_ControlBlockType* pWDICtx,
13054 WDI_EventInfoType* pEventData
13055)
13056{
13057 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13058 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13059
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 wpt_uint16 usDataOffset = 0;
13062 wpt_uint16 usSendSize = 0;
13063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13064
13065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013067 -------------------------------------------------------------------------*/
13068 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13069 ( NULL == pEventData->pCBfnc))
13070 {
13071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 }
13076
13077 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13078 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13079
13080 /*-----------------------------------------------------------------------
13081 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013082 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 -----------------------------------------------------------------------*/
13084
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13087 &pSendBuffer, &usDataOffset, &usSendSize))||
13088 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13089 {
13090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013091 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013095 }
13096
Jeff Johnsone7245742012-09-05 17:12:55 -070013097 wpalMemoryCopy( pSendBuffer+usDataOffset,
13098 &pwdiUpdateCfgParams->uConfigBufferLen,
13099 sizeof(wpt_uint32));
13100 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13101 pwdiUpdateCfgParams->pConfigBuffer,
13102 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013103
13104 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013105 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013106
13107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 -------------------------------------------------------------------------*/
13110
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13112 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013113
13114}/*WDI_ProcessUpdateCfgReq*/
13115
13116
13117/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013118 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013120
13121 @param pWDICtx: pointer to the WLAN DAL context
13122 pEventData: pointer to the event information structure
13123
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 @see
13125 @return Result of the function call
13126*/
13127WDI_Status
13128WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013129(
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 WDI_ControlBlockType* pWDICtx,
13131 WDI_EventInfoType* pEventData
13132)
13133{
13134 WDI_AddBAReqParamsType* pwdiAddBAParams;
13135 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013136 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013138 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 wpt_uint16 usDataOffset = 0;
13140 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013141 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 wpt_macAddr macBSSID;
13143
13144 tAddBAReqMsg halAddBAReq;
13145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13146
13147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 -------------------------------------------------------------------------*/
13150 if (( NULL == pEventData ) ||
13151 ( NULL == pEventData->pEventData) ||
13152 ( NULL == pEventData->pCBfnc ))
13153 {
13154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013158 }
13159
13160 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13161 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13162
13163 /*-------------------------------------------------------------------------
13164 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013165 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013166 -------------------------------------------------------------------------*/
13167 wpalMutexAcquire(&pWDICtx->wptMutex);
13168
13169 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013172 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13173 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 &macBSSID))
13175 {
13176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013177 "This station does not exist in the WDI Station Table %d",
13178 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 }
13182
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13184 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13187 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13188 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013189
13190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 }
13193
13194 /*------------------------------------------------------------------------
13195 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 ------------------------------------------------------------------------*/
13198 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13199 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13201 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13202 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013203
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 }
13208
13209
13210 wpalMutexRelease(&pWDICtx->wptMutex);
13211 /*-----------------------------------------------------------------------
13212 Get message buffer
13213 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 sizeof(halAddBAReq.addBAParams),
13216 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13219 {
13220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013221 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 }
13226
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13229 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13230#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013231 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13233#endif
13234
Jeff Johnsone7245742012-09-05 17:12:55 -070013235 wpalMemoryCopy( pSendBuffer+usDataOffset,
13236 &halAddBAReq.addBAParams,
13237 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013238
13239 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013240 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013241
13242 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013243 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013244 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13246 wdiAddBARspCb, pEventData->pUserData,
13247 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013248}/*WDI_ProcessAddBAReq*/
13249
13250
13251
13252/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013255
13256 @param pWDICtx: pointer to the WLAN DAL context
13257 pEventData: pointer to the event information structure
13258
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 @see
13260 @return Result of the function call
13261*/
13262WDI_Status
13263WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013264(
Jeff Johnson295189b2012-06-20 16:38:30 -070013265 WDI_ControlBlockType* pWDICtx,
13266 WDI_EventInfoType* pEventData
13267)
13268{
13269 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13270 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013271 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013272 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013273 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 wpt_uint16 usDataOffset = 0;
13275 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 wpt_uint16 index;
13278 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013279
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 tTriggerBAReqMsg halTriggerBAReq;
13281 tTriggerBaReqCandidate* halTriggerBACandidate;
13282 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13284
13285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 -------------------------------------------------------------------------*/
13288 if (( NULL == pEventData ) ||
13289 ( NULL == pEventData->pEventData ) ||
13290 ( NULL == pEventData->pCBfnc ))
13291 {
13292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013293 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013296 }
13297
13298 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13299 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13300 /*-------------------------------------------------------------------------
13301 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013302 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 -------------------------------------------------------------------------*/
13304 wpalMutexAcquire(&pWDICtx->wptMutex);
13305
13306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013307 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13310 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013311 &macBSSID))
13312 {
13313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013314 "This station does not exist in the WDI Station Table %d",
13315 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013318 }
13319
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13321 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013322 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13324 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13325 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013326
13327 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013328 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013329 }
13330
13331 /*------------------------------------------------------------------------
13332 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 ------------------------------------------------------------------------*/
13335 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13336 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13338 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13339 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013340
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013343 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013344 }
13345
13346
13347 wpalMutexRelease(&pWDICtx->wptMutex);
13348 /*-----------------------------------------------------------------------
13349 Get message buffer
13350 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013351 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13352 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013353 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13356 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13361 {
13362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013363 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 }
13368
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013371 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13373
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 wpalMemoryCopy( pSendBuffer+usDataOffset,
13375 &halTriggerBAReq.triggerBAParams,
13376 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013377
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13380 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13381 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013382
13383 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 index++)
13385 {
13386 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13387 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13388 halTriggerBACandidate++;
13389 wdiTriggerBACandidate++;
13390 }
13391
13392 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013394
13395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013396 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013397 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013398 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13399 wdiTriggerBARspCb, pEventData->pUserData,
13400 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013401}/*WDI_ProcessTriggerBAReq*/
13402
13403
13404
13405/**
13406 @brief Process Update Beacon Params Request function (called when Main FSM
13407 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013408
13409 @param pWDICtx: pointer to the WLAN DAL context
13410 pEventData: pointer to the event information structure
13411
Jeff Johnson295189b2012-06-20 16:38:30 -070013412 @see
13413 @return Result of the function call
13414*/
13415WDI_Status
13416WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013417(
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 WDI_ControlBlockType* pWDICtx,
13419 WDI_EventInfoType* pEventData
13420)
13421{
13422 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13423 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013424 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013425 wpt_uint16 usDataOffset = 0;
13426 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013427 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13429
13430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 -------------------------------------------------------------------------*/
13433 if (( NULL == pEventData ) ||
13434 ( NULL == pEventData->pEventData) ||
13435 ( NULL == pEventData->pCBfnc))
13436 {
13437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 }
13442
13443 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13444 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13445 /*-----------------------------------------------------------------------
13446 Get message buffer
13447 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 sizeof(halUpdateBeaconParams),
13450 &pSendBuffer, &usDataOffset, &usSendSize))||
13451 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13452 {
13453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013454 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 }
13459
13460 /*BSS Index of the BSS*/
13461 halUpdateBeaconParams.bssIdx =
13462 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13463 /*shortPreamble mode. HAL should update all the STA rates when it
13464 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13467 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013468 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013469 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13470 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13473
13474 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13487 halUpdateBeaconParams.fRIFSMode =
13488 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13491
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13493 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013494
13495 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013497
13498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13502 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013503}/*WDI_ProcessUpdateBeaconParamsReq*/
13504
13505
13506
13507/**
13508 @brief Process Send Beacon template Request function (called when Main FSM
13509 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013510
13511 @param pWDICtx: pointer to the WLAN DAL context
13512 pEventData: pointer to the event information structure
13513
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 @see
13515 @return Result of the function call
13516*/
13517WDI_Status
13518WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013519(
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 WDI_ControlBlockType* pWDICtx,
13521 WDI_EventInfoType* pEventData
13522)
13523{
13524 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13525 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 wpt_uint16 usDataOffset = 0;
13528 wpt_uint16 usSendSize = 0;
13529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13530
13531 tSendBeaconReqMsg halSendBeaconReq;
13532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 -------------------------------------------------------------------------*/
13535 if (( NULL == pEventData ) ||
13536 ( NULL == pEventData->pEventData ) ||
13537 ( NULL == pEventData->pCBfnc ))
13538 {
13539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 }
13544
13545 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13546 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13547 /*-----------------------------------------------------------------------
13548 Get message buffer
13549 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013550 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013551 sizeof(halSendBeaconReq.sendBeaconParam),
13552 &pSendBuffer, &usDataOffset, &usSendSize))||
13553 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13554 {
13555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013556 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013557 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 }
13561
13562 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13563 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13564 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13567 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13568 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13569 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013570 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013571 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013572 /* usP2PIeOffset should be atleast greater than timIeOffset */
13573 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13574 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13575 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13576 {
13577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13578 "Invalid usP2PIeOffset %hu",
13579 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13580 WDI_ASSERT(0);
13581 return WDI_STATUS_E_FAILURE;
13582 }
13583
Jeff Johnsone7245742012-09-05 17:12:55 -070013584 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013585 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013586
Jeff Johnsone7245742012-09-05 17:12:55 -070013587 wpalMemoryCopy( pSendBuffer+usDataOffset,
13588 &halSendBeaconReq.sendBeaconParam,
13589 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013590
13591 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013592 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013593
13594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013595 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013596 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013597 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13598 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013599}/*WDI_ProcessSendBeaconParamsReq*/
13600
13601/**
13602 @brief Process Update Beacon Params Request function (called when Main FSM
13603 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013604
13605 @param pWDICtx: pointer to the WLAN DAL context
13606 pEventData: pointer to the event information structure
13607
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 @see
13609 @return Result of the function call
13610*/
13611WDI_Status
13612WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013613(
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 WDI_ControlBlockType* pWDICtx,
13615 WDI_EventInfoType* pEventData
13616)
13617{
13618 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13619 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 wpt_uint16 usDataOffset = 0;
13622 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013623 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13625
13626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 -------------------------------------------------------------------------*/
13629 if (( NULL == pEventData ) ||
13630 ( NULL == pEventData->pEventData) ||
13631 ( NULL == pEventData->pCBfnc))
13632 {
13633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013637 }
13638
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013642 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13643 /*-----------------------------------------------------------------------
13644 Get message buffer
13645 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 sizeof(halUpdateProbeRspTmplParams),
13648 &pSendBuffer, &usDataOffset, &usSendSize))||
13649 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13650 {
13651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013652 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013653 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 }
13657
13658 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013659 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013660 WDI_MAC_ADDR_LEN);
13661
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13664
13665 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13666 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013667 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013668
13669
13670 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13671 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13672 WDI_PROBE_REQ_BITMAP_IE_LEN);
13673
Jeff Johnsone7245742012-09-05 17:12:55 -070013674 wpalMemoryCopy( pSendBuffer+usDataOffset,
13675 &halUpdateProbeRspTmplParams,
13676 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013677
13678 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013680
13681 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13685 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13686 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013687}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13688
13689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013690 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013691 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013692
13693 @param pWDICtx: pointer to the WLAN DAL context
13694 pEventData: pointer to the event information structure
13695
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 @see
13697 @return Result of the function call
13698*/
13699WDI_Status
13700WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013701(
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 WDI_ControlBlockType* pWDICtx,
13703 WDI_EventInfoType* pEventData
13704)
13705{
13706
13707 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13708 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13709
13710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 -------------------------------------------------------------------------*/
13713 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13718 {
13719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 }
13724
13725 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013726 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13728
13729 /*cache the wdi nv request message here if the the first fragment
13730 * To issue the request to HAL for the next fragment */
13731 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13732 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013733 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13734 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13736
13737 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13738 pWDICtx->pRspCBUserData = pEventData->pUserData;
13739 }
13740
13741 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13742}
13743
13744/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013745 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013747
13748 @param pWDICtx: pointer to the WLAN DAL context
13749 pEventData: pointer to the event information structure
13750
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 @see
13752 @return Result of the function call
13753*/
13754WDI_Status WDI_ProcessSetMaxTxPowerReq
13755(
13756 WDI_ControlBlockType* pWDICtx,
13757 WDI_EventInfoType* pEventData
13758)
13759{
13760 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13761 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013762 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013763 wpt_uint16 usDataOffset = 0;
13764 wpt_uint16 usSendSize = 0;
13765 tSetMaxTxPwrReq halSetMaxTxPower;
13766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13767
13768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 -------------------------------------------------------------------------*/
13771 if (( NULL == pEventData ) ||
13772 ( NULL == pEventData->pEventData ) ||
13773 ( NULL == pEventData->pCBfnc ))
13774 {
13775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013779 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13784
13785 /*-----------------------------------------------------------------------
13786 Get message buffer
13787 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013788if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13790 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013791 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013792)))
13793 {
13794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013795 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013796 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013799 }
13800
13801 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13802 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13803 WDI_MAC_ADDR_LEN);
13804
13805 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13806 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13807 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013809 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013810
13811 wpalMemoryCopy( pSendBuffer+usDataOffset,
13812 &halSetMaxTxPower.setMaxTxPwrParams,
13813 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013814
13815 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013817
13818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013821 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13822 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13823 WDI_SET_MAX_TX_POWER_RESP);
13824
Jeff Johnson295189b2012-06-20 16:38:30 -070013825}
13826
Arif Hussaina5ebce02013-08-09 15:09:58 -070013827/*
13828 @brief Process Set Max Tx Power Per Band Request function (called when Main
13829 FSM allows it)
13830
13831 @param pWDICtx: pointer to the WLAN DAL context
13832 pEventData: pointer to the event information structure
13833
13834 @see
13835 @return Result of the function call
13836*/
13837WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13838(
13839 WDI_ControlBlockType* pWDICtx,
13840 WDI_EventInfoType* pEventData
13841)
13842{
13843 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13844 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13845 wpt_uint8* pSendBuffer = NULL;
13846 wpt_uint16 usDataOffset = 0;
13847 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013848 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013849 WDI_Status rValue = WDI_STATUS_SUCCESS;
13850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13851
13852 /*-------------------------------------------------------------------------
13853 Sanity check
13854 -------------------------------------------------------------------------*/
13855 if (( NULL == pEventData ) ||
13856 ( NULL == pEventData->pEventData ) ||
13857 ( NULL == pEventData->pCBfnc ))
13858 {
13859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13860 "%s: Invalid parameters", __func__);
13861 WDI_ASSERT(0);
13862 return WDI_STATUS_E_FAILURE;
13863 }
13864 pwdiSetMaxTxPowerPerBandParams = \
13865 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13866
13867 wdiSetMaxTxPowerPerBandRspCb = \
13868 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13869
13870 /*-----------------------------------------------------------------------
13871 Get message buffer
13872 -----------------------------------------------------------------------*/
13873
13874 rValue = WDI_GetMessageBuffer(pWDICtx,
13875 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13876 sizeof(tSetMaxTxPwrPerBandParams),
13877 &pSendBuffer, &usDataOffset, &usSendSize);
13878
13879 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13880 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13881 {
13882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13883 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13884 pEventData, pwdiSetMaxTxPowerPerBandParams,
13885 wdiSetMaxTxPowerPerBandRspCb);
13886 WDI_ASSERT(0);
13887 return WDI_STATUS_E_FAILURE;
13888 }
13889
13890
Arif Hussainf8f080c2014-04-03 09:48:36 -070013891 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13892 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013893 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13894
Arif Hussainf8f080c2014-04-03 09:48:36 -070013895 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013896 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13897
13898 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13899 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13900
13901 /*-------------------------------------------------------------------------
13902 Send Set Max Tx Power Per Band Request to HAL
13903 -------------------------------------------------------------------------*/
13904 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13905 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13906 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13907}
13908
schang86c22c42013-03-13 18:41:24 -070013909/**
13910 @brief Process Set Tx Power Request function (called when Main
13911 FSM allows it)
13912
13913 @param pWDICtx: pointer to the WLAN DAL context
13914 pEventData: pointer to the event information structure
13915
13916 @see
13917 @return Result of the function call
13918*/
13919WDI_Status WDI_ProcessSetTxPowerReq
13920(
13921 WDI_ControlBlockType* pWDICtx,
13922 WDI_EventInfoType* pEventData
13923)
13924{
13925 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13926 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13927 wpt_uint8* pSendBuffer = NULL;
13928 wpt_uint16 usDataOffset = 0;
13929 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013930 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13932
13933 /*-------------------------------------------------------------------------
13934 Sanity check
13935 -------------------------------------------------------------------------*/
13936 if (( NULL == pEventData ) ||
13937 ( NULL == pEventData->pEventData ) ||
13938 ( NULL == pEventData->pCBfnc ))
13939 {
13940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13941 "%s: Invalid parameters", __func__);
13942 WDI_ASSERT(0);
13943 return WDI_STATUS_E_FAILURE;
13944 }
13945
13946 pwdiSetTxPowerParams =
13947 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13948 wdiSetTxPowerRspCb =
13949 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13950
13951 /*-----------------------------------------------------------------------
13952 Get message buffer
13953 -----------------------------------------------------------------------*/
13954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13955 sizeof(tSetTxPwrReqParams),
13956 &pSendBuffer, &usDataOffset, &usSendSize))||
13957 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13958 )))
13959 {
13960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013961 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013962 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13963 WDI_ASSERT(0);
13964 return WDI_STATUS_E_FAILURE;
13965 }
13966
Leo Chang9a43db92013-03-25 17:39:58 -070013967 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13968 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13969 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013970
13971 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13972 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13973
13974 /*-------------------------------------------------------------------------
13975 Send Set Tx Power Request to HAL
13976 -------------------------------------------------------------------------*/
13977 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13978 wdiSetTxPowerRspCb, pEventData->pUserData,
13979 WDI_SET_TX_POWER_RESP);
13980}
Jeff Johnson295189b2012-06-20 16:38:30 -070013981
13982/**
13983 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13984 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013985
13986 @param pWDICtx: pointer to the WLAN DAL context
13987 pEventData: pointer to the event information structure
13988
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 @see
13990 @return Result of the function call
13991*/
13992WDI_Status
13993WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013994(
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 WDI_ControlBlockType* pWDICtx,
13996 WDI_EventInfoType* pEventData
13997)
13998{
13999 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
14000 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 wpt_uint16 usDataOffset = 0;
14003 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14006
14007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 -------------------------------------------------------------------------*/
14010 if (( NULL == pEventData ) ||
14011 ( NULL == pEventData->pEventData) ||
14012 ( NULL == pEventData->pCBfnc))
14013 {
14014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014018 }
14019
Jeff Johnsone7245742012-09-05 17:12:55 -070014020 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014022 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
14024 /*-----------------------------------------------------------------------
14025 Get message buffer
14026 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14028 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 sizeof(halSetP2PGONOAParams),
14030 &pSendBuffer, &usDataOffset, &usSendSize))||
14031 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
14032 {
14033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014034 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
14036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 }
14039
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
14044 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070014045 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014046 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014047 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014049 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014050 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014051 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14053
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 wpalMemoryCopy( pSendBuffer+usDataOffset,
14055 &halSetP2PGONOAParams,
14056 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014057
14058 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014059 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014060
14061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014062 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014064 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14065 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14066 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014067}/*WDI_ProcessP2PGONOAReq*/
14068
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014069#ifdef FEATURE_WLAN_TDLS
14070
14071/**
14072 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14073 allows it)
14074
14075 @param pWDICtx: pointer to the WLAN DAL context
14076 pEventData: pointer to the event information structure
14077
14078 @see
14079 @return Result of the function call
14080*/
14081WDI_Status
14082WDI_ProcessTdlsLinkEstablishReq
14083(
14084 WDI_ControlBlockType* pWDICtx,
14085 WDI_EventInfoType* pEventData
14086)
14087{
14088 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14089 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14090 wpt_uint8* pSendBuffer = NULL;
14091 wpt_uint16 usDataOffset = 0;
14092 wpt_uint16 usSendSize = 0;
14093
14094 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14096
14097 /*-------------------------------------------------------------------------
14098 Sanity check
14099 -------------------------------------------------------------------------*/
14100 if (( NULL == pEventData ) ||
14101 ( NULL == pEventData->pEventData) ||
14102 ( NULL == pEventData->pCBfnc))
14103 {
14104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14105 "%s: Invalid parameters", __func__);
14106 WDI_ASSERT(0);
14107 return WDI_STATUS_E_FAILURE;
14108 }
14109 pwdiTDLSLinkEstablishReqParams =
14110 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14111 wdiTDLSLinkEstablishReqRspCb =
14112 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14113
14114
14115 /*-----------------------------------------------------------------------
14116 Get message buffer
14117 -----------------------------------------------------------------------*/
14118 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14119 WDI_TDLS_LINK_ESTABLISH_REQ,
14120 sizeof(halSetTDLSLinkEstablishParams),
14121 &pSendBuffer, &usDataOffset, &usSendSize))||
14122 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14123 {
14124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014125 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014126 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14127 WDI_ASSERT(0);
14128 return WDI_STATUS_E_FAILURE;
14129 }
14130
14131 halSetTDLSLinkEstablishParams.staIdx =
14132 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14133 halSetTDLSLinkEstablishParams.bIsResponder =
14134 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14135 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14136 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14137 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14138 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14139 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14140 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14141 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14142 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14143 halSetTDLSLinkEstablishParams.aAck = 0;
14144 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14145 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14146 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014147 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14148 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14149
14150 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14151 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14152 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14153 halSetTDLSLinkEstablishParams.validChannelsLen =
14154 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14155
14156 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14157 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14158 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14159 halSetTDLSLinkEstablishParams.validOperClassesLen =
14160 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014161
14162 wpalMemoryCopy( pSendBuffer+usDataOffset,
14163 &halSetTDLSLinkEstablishParams,
14164 sizeof(halSetTDLSLinkEstablishParams));
14165
14166 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14167 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14168
14169 /*-------------------------------------------------------------------------
14170 Send Update Probe Resp Template Request to HAL
14171 -------------------------------------------------------------------------*/
14172 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14173 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14174 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14175 return 0;
14176}/*WDI_ProcessTdlsLinkEstablishReq*/
14177
14178
Atul Mittalc0f739f2014-07-31 13:47:47 +053014179/**
14180 @brief sends the channel switch command to f/w (called when Main FSM
14181 allows it)
14182
14183 @param pWDICtx: pointer to the WLAN DAL context
14184 pEventData: pointer to the event information structure
14185
14186 @see
14187 @return Result of the function call
14188*/
14189WDI_Status
14190WDI_ProcessTdlsChanSwitchReq
14191(
14192 WDI_ControlBlockType* pWDICtx,
14193 WDI_EventInfoType* pEventData
14194)
14195{
14196 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14197 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14198 wpt_uint8* pSendBuffer = NULL;
14199 wpt_uint16 usDataOffset = 0;
14200 wpt_uint16 usSendSize = 0;
14201 //WDI_Status wdiStatus;
14202 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14204
14205 /*-------------------------------------------------------------------------
14206 Sanity check
14207 -------------------------------------------------------------------------*/
14208 if (( NULL == pEventData ) ||
14209 ( NULL == pEventData->pEventData))
14210 {
14211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14212 "%s: Invalid parameters", __func__);
14213 WDI_ASSERT(0);
14214 return WDI_STATUS_E_FAILURE;
14215 }
14216 pwdiTDLSChanSwitchReqParams =
14217 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14218 wdiTDLSChanSwitchReqRspCb =
14219 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14220
14221 /*-----------------------------------------------------------------------
14222 Get message buffer
14223 -----------------------------------------------------------------------*/
14224 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14225 WDI_TDLS_CHAN_SWITCH_REQ,
14226 sizeof(halSetTDLSChanSwitchParams),
14227 &pSendBuffer, &usDataOffset, &usSendSize))||
14228 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14229 {
14230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14231 "Unable to get send buffer in Channel Switch REQ %p %p %p",
14232 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14233 WDI_ASSERT(0);
14234 return WDI_STATUS_E_FAILURE;
14235 }
14236
14237 halSetTDLSChanSwitchParams.staIdx =
14238 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14239 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14240 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14241 halSetTDLSChanSwitchParams.targetOperClass =
14242 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14243 halSetTDLSChanSwitchParams.targetChannel =
14244 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14245 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14246 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14247 wpalMemoryCopy( pSendBuffer+usDataOffset,
14248 &halSetTDLSChanSwitchParams,
14249 sizeof(halSetTDLSChanSwitchParams));
14250
14251 pWDICtx->wdiReqStatusCB = NULL;
14252 pWDICtx->pReqStatusUserData = NULL;
14253
14254 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14255 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14256 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14257}/*WDI_ProcessTdlsChanSwitchReq*/
14258
14259#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014260
Jeff Johnson295189b2012-06-20 16:38:30 -070014261
14262
14263/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 @param None
14267
14268 @see
14269 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014270*/
14271void
14272WDI_SetPowerStateCb
14273(
14274 wpt_status status,
14275 unsigned int dxePhyAddr,
14276 void *pContext
14277)
14278{
14279 wpt_status wptStatus;
14280 WDI_ControlBlockType *pCB = NULL;
14281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014282 /*
14283 * Trigger the event to bring the Enter BMPS req function to come
14284 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014285*/
14286 if( NULL != pContext )
14287 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 }
14290 else
14291 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014292 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014293 pCB = &gWDICb;
14294 }
Mihir Shetea4306052014-03-25 00:02:54 +053014295
14296 if(eWLAN_PAL_STATUS_SUCCESS == status )
14297 {
14298 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14299 }
14300 else
14301 {
14302 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14303 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 pCB->dxePhyAddr = dxePhyAddr;
14305 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14306 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14307 {
14308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14309 "Failed to set an event");
14310
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 }
14313 return;
14314}
14315
14316
14317/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014320
14321 @param pWDICtx: pointer to the WLAN DAL context
14322 pEventData: pointer to the event information structure
14323
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 @see
14325 @return Result of the function call
14326*/
14327WDI_Status
14328WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014329(
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 WDI_ControlBlockType* pWDICtx,
14331 WDI_EventInfoType* pEventData
14332)
14333{
Jeff Johnson43971f52012-07-17 12:26:56 -070014334 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014337 wpt_uint16 usDataOffset = 0;
14338 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014339 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14341
14342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014344 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014345 if ((NULL == pEventData ) ||
14346 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14347 (NULL == (pwdiEnterImpsReqParams =
14348 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 {
14350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014353 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 }
14355
14356 /*-----------------------------------------------------------------------
14357 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014360 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 0,
14362 &pSendBuffer, &usDataOffset, &usSendSize))||
14363 ( usSendSize < (usDataOffset )))
14364 {
14365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014366 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014367 pEventData, wdiEnterImpsRspCb);
14368 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014369 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 }
14371
14372 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014373 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14374 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 {
14376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14377 "WDI Init failed to reset an event");
14378
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014380 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 }
14382
14383 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014384 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14385 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014387 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014388 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014389 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014390 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014391
14392 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014393 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014394 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014395 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14396 WDI_SET_POWER_STATE_TIMEOUT);
14397 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 {
14399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14400 "WDI Init failed to wait on an event");
14401
Karthick S1fa70262015-08-20 13:28:14 +053014402 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014404 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 }
14406
Mihir Shetea4306052014-03-25 00:02:54 +053014407 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14408 {
14409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14410 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14411
14412 goto fail;
14413 }
14414
14415 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14416 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14421 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014422
14423fail:
14424 // Release the message buffer so we don't leak
14425 wpalMemoryFree(pSendBuffer);
14426
14427failRequest:
14428 //WDA should have failure check to avoid the memory leak
14429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014430}/*WDI_ProcessEnterImpsReq*/
14431
14432/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014433 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014434 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014435
14436 @param pWDICtx: pointer to the WLAN DAL context
14437 pEventData: pointer to the event information structure
14438
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 @see
14440 @return Result of the function call
14441*/
14442WDI_Status
14443WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014444(
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 WDI_ControlBlockType* pWDICtx,
14446 WDI_EventInfoType* pEventData
14447)
14448{
14449 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 wpt_uint16 usDataOffset = 0;
14452 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014453 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14455
14456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 -------------------------------------------------------------------------*/
14459 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014460 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14461 (NULL == (pwdiExitImpsReqParams =
14462 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 {
14464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 }
14469
14470 /*-----------------------------------------------------------------------
14471 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014472 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 0,
14476 &pSendBuffer, &usDataOffset, &usSendSize))||
14477 ( usSendSize < (usDataOffset )))
14478 {
14479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014480 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014481 pEventData, wdiExitImpsRspCb);
14482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014485 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14486 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14491 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014492}/*WDI_ProcessExitImpsReq*/
14493
14494/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014496 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014497
14498 @param pWDICtx: pointer to the WLAN DAL context
14499 pEventData: pointer to the event information structure
14500
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 @see
14502 @return Result of the function call
14503*/
14504WDI_Status
14505WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014506(
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 WDI_ControlBlockType* pWDICtx,
14508 WDI_EventInfoType* pEventData
14509)
14510{
14511 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14512 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014513 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014514 wpt_uint16 usDataOffset = 0;
14515 wpt_uint16 usSendSize = 0;
14516 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014517 wpt_status wptStatus;
14518
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14520
14521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 -------------------------------------------------------------------------*/
14524 if (( NULL == pEventData ) ||
14525 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14526 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14527 {
14528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014529 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014531 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 }
14533
14534 /*-----------------------------------------------------------------------
14535 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014536 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014538 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014539 sizeof(enterBmpsReq),
14540 &pSendBuffer, &usDataOffset, &usSendSize))||
14541 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14542 {
14543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014544 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014545 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14546 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014547 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 }
14549
14550 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014551 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14552 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014553 {
14554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14555 "WDI Init failed to reset an event");
14556
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014558 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014559 }
14560
14561 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014562 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14563 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14564 {
14565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014566 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014567 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014568 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014569 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014570
14571/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014572 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014574 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14575 WDI_SET_POWER_STATE_TIMEOUT);
14576 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 {
14578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14579 "WDI Init failed to wait on an event");
14580
Karthick S1fa70262015-08-20 13:28:14 +053014581 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014583 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014584 }
14585
14586 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14587
14588 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14589 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14590 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14591 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14592
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014593 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014594 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14595 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14596 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14597
14598 wpalMemoryCopy( pSendBuffer+usDataOffset,
14599 &enterBmpsReq,
14600 sizeof(enterBmpsReq));
14601
14602 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014603 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014604
14605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014606 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014608 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14609 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014610
14611fail:
14612 // Release the message buffer so we don't leak
14613 wpalMemoryFree(pSendBuffer);
14614
14615failRequest:
14616 //WDA should have failure check to avoid the memory leak
14617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014618}/*WDI_ProcessEnterBmpsReq*/
14619
14620/**
14621 @brief Process Exit BMPS Request function (called when Main FSM
14622 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014623
14624 @param pWDICtx: pointer to the WLAN DAL context
14625 pEventData: pointer to the event information structure
14626
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 @see
14628 @return Result of the function call
14629*/
14630WDI_Status
14631WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014632(
Jeff Johnson295189b2012-06-20 16:38:30 -070014633 WDI_ControlBlockType* pWDICtx,
14634 WDI_EventInfoType* pEventData
14635)
14636{
14637 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14638 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 wpt_uint16 usDataOffset = 0;
14641 wpt_uint16 usSendSize = 0;
14642 tHalExitBmpsReqParams exitBmpsReq;
14643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14644
14645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 -------------------------------------------------------------------------*/
14648 if (( NULL == pEventData ) ||
14649 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14650 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14651 {
14652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014656 }
14657
14658 /*-----------------------------------------------------------------------
14659 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014662 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 sizeof(exitBmpsReq),
14664 &pSendBuffer, &usDataOffset, &usSendSize))||
14665 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14666 {
14667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014668 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 }
14673 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14674
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14676
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 wpalMemoryCopy( pSendBuffer+usDataOffset,
14678 &exitBmpsReq,
14679 sizeof(exitBmpsReq));
14680
14681 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014682 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014683
14684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14688 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014689}/*WDI_ProcessExitBmpsReq*/
14690
14691/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014694
14695 @param pWDICtx: pointer to the WLAN DAL context
14696 pEventData: pointer to the event information structure
14697
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 @see
14699 @return Result of the function call
14700*/
14701WDI_Status
14702WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014703(
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 WDI_ControlBlockType* pWDICtx,
14705 WDI_EventInfoType* pEventData
14706)
14707{
14708 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14709 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 wpt_uint16 usDataOffset = 0;
14712 wpt_uint16 usSendSize = 0;
14713 tUapsdReqParams enterUapsdReq;
14714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14715
14716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 -------------------------------------------------------------------------*/
14719 if (( NULL == pEventData ) ||
14720 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14721 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14722 {
14723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 }
14728
14729 /*-----------------------------------------------------------------------
14730 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 sizeof(enterUapsdReq),
14735 &pSendBuffer, &usDataOffset, &usSendSize))||
14736 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14737 {
14738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014739 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 }
14744
14745 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14746 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14747 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14748 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14749 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14750 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14751 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14752 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014754
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 wpalMemoryCopy( pSendBuffer+usDataOffset,
14756 &enterUapsdReq,
14757 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014758
14759 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014761
14762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014763 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14766 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014767}/*WDI_ProcessEnterUapsdReq*/
14768
14769/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014772
14773 @param pWDICtx: pointer to the WLAN DAL context
14774 pEventData: pointer to the event information structure
14775
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 @see
14777 @return Result of the function call
14778*/
14779WDI_Status
14780WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014781(
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 WDI_ControlBlockType* pWDICtx,
14783 WDI_EventInfoType* pEventData
14784)
14785{
14786 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014787 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014788 wpt_uint16 usDataOffset = 0;
14789 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014790 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14791 wpt_uint8 bssIdx = 0;
14792
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14794
14795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 -------------------------------------------------------------------------*/
14798 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014799 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14801 {
14802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 }
14807
14808 /*-----------------------------------------------------------------------
14809 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014810 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014813 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014814 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014815 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 {
14817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014818 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 pEventData, wdiExitUapsdRspCb);
14820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 }
14823
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014824 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14825
14826 wpalMemoryCopy( pSendBuffer+usDataOffset,
14827 &bssIdx,
14828 sizeof(wpt_uint8));
14829
14830 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14831 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14832
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14837 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014838}/*WDI_ProcessExitUapsdReq*/
14839
14840/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014843
14844 @param pWDICtx: pointer to the WLAN DAL context
14845 pEventData: pointer to the event information structure
14846
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 @see
14848 @return Result of the function call
14849*/
14850WDI_Status
14851WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014852(
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 WDI_ControlBlockType* pWDICtx,
14854 WDI_EventInfoType* pEventData
14855)
14856{
14857 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14858 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014859 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014860 wpt_uint16 usDataOffset = 0;
14861 wpt_uint16 usSendSize = 0;
14862 tUapsdInfo uapsdAcParamsReq;
14863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14864
14865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 -------------------------------------------------------------------------*/
14868 if (( NULL == pEventData ) ||
14869 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14870 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14871 {
14872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 }
14877
14878 /*-----------------------------------------------------------------------
14879 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 sizeof(uapsdAcParamsReq),
14884 &pSendBuffer, &usDataOffset, &usSendSize))||
14885 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14886 {
14887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014888 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 }
14893
14894 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14895 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14896 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14897 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14898 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14899 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14900
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 wpalMemoryCopy( pSendBuffer+usDataOffset,
14902 &uapsdAcParamsReq,
14903 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014904
14905 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014907
14908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14912 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014913}/*WDI_ProcessSetUapsdAcParamsReq*/
14914
14915/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014918
14919 @param pWDICtx: pointer to the WLAN DAL context
14920 pEventData: pointer to the event information structure
14921
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 @see
14923 @return Result of the function call
14924*/
14925WDI_Status
14926WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014927(
Jeff Johnson295189b2012-06-20 16:38:30 -070014928 WDI_ControlBlockType* pWDICtx,
14929 WDI_EventInfoType* pEventData
14930)
14931{
14932 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14933 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 wpt_uint16 usDataOffset = 0;
14936 wpt_uint16 usSendSize = 0;
14937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14938
14939 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 -------------------------------------------------------------------------*/
14942 if (( NULL == pEventData ) ||
14943 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14944 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14945 {
14946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014947 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 }
14951
14952 /*-----------------------------------------------------------------------
14953 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014954 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014955 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014956 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14958 &pSendBuffer, &usDataOffset, &usSendSize))||
14959 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14960 {
14961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014962 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 }
14967
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 wpalMemoryCopy( pSendBuffer+usDataOffset,
14969 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14970 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014971
14972 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014974
14975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14979 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014980}/*WDI_ProcessUpdateUapsdParamsReq*/
14981
14982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014983 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014984 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014985
14986 @param pWDICtx: pointer to the WLAN DAL context
14987 pEventData: pointer to the event information structure
14988
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 @see
14990 @return Result of the function call
14991*/
14992WDI_Status
14993WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014994(
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 WDI_ControlBlockType* pWDICtx,
14996 WDI_EventInfoType* pEventData
14997)
14998{
14999 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
15000 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 wpt_uint16 usDataOffset = 0;
15003 wpt_uint16 usSendSize = 0;
15004 tHalConfigureRxpFilterReqParams halRxpFilterParams;
15005
15006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15007
15008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015010 -------------------------------------------------------------------------*/
15011 if (( NULL == pEventData ) ||
15012 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
15013 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
15014 {
15015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 }
15020
15021 /*-----------------------------------------------------------------------
15022 Get message buffer
15023 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015024 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 sizeof(halRxpFilterParams),
15026 &pSendBuffer, &usDataOffset, &usSendSize))||
15027 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
15028 {
15029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015030 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
15032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015034 }
15035
Jeff Johnsone7245742012-09-05 17:12:55 -070015036 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070015037 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
15040
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 wpalMemoryCopy( pSendBuffer+usDataOffset,
15042 &halRxpFilterParams,
15043 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015044
15045 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015047
15048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015049 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015050 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015051 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15052 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015053}/*WDI_ProcessConfigureRxpFilterReq*/
15054
15055/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015058
15059 @param pWDICtx: pointer to the WLAN DAL context
15060 pEventData: pointer to the event information structure
15061
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 @see
15063 @return Result of the function call
15064*/
15065WDI_Status
15066WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015067(
Jeff Johnson295189b2012-06-20 16:38:30 -070015068 WDI_ControlBlockType* pWDICtx,
15069 WDI_EventInfoType* pEventData
15070)
15071{
15072 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15073 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015074 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015075 wpt_uint16 usDataOffset = 0;
15076 wpt_uint16 usSendSize = 0;
15077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15078
15079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 -------------------------------------------------------------------------*/
15082 if (( NULL == pEventData ) ||
15083 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15084 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15085 {
15086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 }
15091
15092 /*-----------------------------------------------------------------------
15093 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015094 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15098 &pSendBuffer, &usDataOffset, &usSendSize))||
15099 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15100 {
15101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015102 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 }
15107
Jeff Johnsone7245742012-09-05 17:12:55 -070015108 wpalMemoryCopy( pSendBuffer+usDataOffset,
15109 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15110 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15111 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15112 &pwdiBeaconFilterParams->aFilters[0],
15113 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015114
15115 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015117
15118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15122 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015123}/*WDI_ProcessSetBeaconFilterReq*/
15124
15125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015126 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015127 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015128
15129 @param pWDICtx: pointer to the WLAN DAL context
15130 pEventData: pointer to the event information structure
15131
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 @see
15133 @return Result of the function call
15134*/
15135WDI_Status
15136WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015137(
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 WDI_ControlBlockType* pWDICtx,
15139 WDI_EventInfoType* pEventData
15140)
15141{
15142 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15143 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 wpt_uint16 usDataOffset = 0;
15146 wpt_uint16 usSendSize = 0;
15147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15148
15149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 -------------------------------------------------------------------------*/
15152 if (( NULL == pEventData ) ||
15153 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15154 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15155 {
15156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 }
15161
15162 /*-----------------------------------------------------------------------
15163 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015164 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15168 &pSendBuffer, &usDataOffset, &usSendSize))||
15169 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15170 {
15171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015172 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 }
15177
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 wpalMemoryCopy( pSendBuffer+usDataOffset,
15179 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15180 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015181
15182 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015183 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015184
15185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15189 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015190}
15191
15192/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015194 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015195
15196 @param pWDICtx: pointer to the WLAN DAL context
15197 pEventData: pointer to the event information structure
15198
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 @see
15200 @return Result of the function call
15201*/
15202WDI_Status
15203WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015204(
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 WDI_ControlBlockType* pWDICtx,
15206 WDI_EventInfoType* pEventData
15207)
15208{
15209 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15210 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 wpt_uint16 usDataOffset = 0;
15213 wpt_uint16 usSendSize = 0;
15214 tHalRSSIThresholds rssiThresholdsReq;
15215 WDI_Status ret_status = 0;
15216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15217
15218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015220 -------------------------------------------------------------------------*/
15221 if (( NULL == pEventData ) ||
15222 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15223 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15224 {
15225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 }
15230
15231 /*-----------------------------------------------------------------------
15232 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015233 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 sizeof(rssiThresholdsReq),
15237 &pSendBuffer, &usDataOffset, &usSendSize))||
15238 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15239 {
15240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015241 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 }
15246
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015257 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015261 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015262 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015263 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015264 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015265 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15267
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 wpalMemoryCopy( pSendBuffer+usDataOffset,
15269 &rssiThresholdsReq,
15270 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015271
15272 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015274
15275 /*-------------------------------------------------------------------------
15276 Send Set threshold req to HAL
15277 -------------------------------------------------------------------------*/
15278 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15279 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15280 {
15281 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15282 // req. Then as a result of processing the threshold cross ind, we trigger
15283 // a Set threshold req, then we need to indicate to WDI that it needs to
15284 // go to busy state as a result of the indication as we sent a req in the
15285 // same WDI context.
15286 // Hence expected state transition is to busy.
15287 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15288 }
15289
15290 return ret_status;
15291}
15292
15293/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015296
15297 @param pWDICtx: pointer to the WLAN DAL context
15298 pEventData: pointer to the event information structure
15299
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 @see
15301 @return Result of the function call
15302*/
15303WDI_Status
15304WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015305(
Jeff Johnson295189b2012-06-20 16:38:30 -070015306 WDI_ControlBlockType* pWDICtx,
15307 WDI_EventInfoType* pEventData
15308)
15309{
15310 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15311 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015312 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015313 wpt_uint16 usDataOffset = 0;
15314 wpt_uint16 usSendSize = 0;
15315 tHalHostOffloadReq hostOffloadParams;
15316 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015317 wpt_uint8 ucCurrentBSSSesIdx = 0;
15318 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015319
15320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15321
15322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 -------------------------------------------------------------------------*/
15325 if (( NULL == pEventData ) ||
15326 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15327 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15328 {
15329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015332 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 }
15334
15335 /*-----------------------------------------------------------------------
15336 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15341 &pSendBuffer, &usDataOffset, &usSendSize))||
15342 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15343 {
15344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015345 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15347 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015348 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 }
15350
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015351 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15352 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15353 &pBSSSes);
15354 if ( NULL == pBSSSes )
15355 {
c_hpothu86feba52014-10-28 15:51:18 +053015356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015357 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15358 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015359 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015360 }
15361
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15363 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015364
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15366 {
15367 // ARP Offload
15368 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15369 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15370 4);
15371 }
15372 else
15373 {
15374 // NS Offload
15375 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15376 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15377 16);
15378
15379#ifdef WLAN_NS_OFFLOAD
15380 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15381 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15382 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15383 16);
15384 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15385 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15386 16);
15387 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15388 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15389 16);
15390 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15391 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15392 16);
15393 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15394 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15395 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015396 nsOffloadParams.srcIPv6AddrValid =
15397 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15398
15399 nsOffloadParams.targetIPv6Addr1Valid =
15400 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15401
15402 nsOffloadParams.targetIPv6Addr2Valid =
15403 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15404
15405 nsOffloadParams.slotIndex =
15406 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015407
Jeff Johnson295189b2012-06-20 16:38:30 -070015408#endif // WLAN_NS_OFFLOAD
15409 }
15410
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015411 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15412
Jeff Johnson295189b2012-06-20 16:38:30 -070015413 // copy hostOffloadParams into pSendBuffer
15414 wpalMemoryCopy( pSendBuffer+usDataOffset,
15415 &hostOffloadParams,
15416 sizeof(hostOffloadParams));
15417
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015418 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015420 // copy nsOffloadParams into pSendBuffer
15421 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 &nsOffloadParams,
15423 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015424 }
15425 else
15426 {
15427#ifdef WLAN_NS_OFFLOAD
15428 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15429 {
15430 // copy nsOffloadParams into pSendBuffer
15431 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15432 &nsOffloadParams,
15433 sizeof(nsOffloadParams));
15434 }
15435#endif
15436 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015437
15438 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015440
15441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015442 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015443 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015444 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15445 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015446
15447fail:
15448 // Release the message buffer so we don't leak
15449 wpalMemoryFree(pSendBuffer);
15450
15451failRequest:
15452 //WDA should have failure check to avoid the memory leak
15453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015454}/*WDI_ProcessHostOffloadReq*/
15455
15456/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015459
15460 @param pWDICtx: pointer to the WLAN DAL context
15461 pEventData: pointer to the event information structure
15462
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 @see
15464 @return Result of the function call
15465*/
15466WDI_Status
15467WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015468(
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 WDI_ControlBlockType* pWDICtx,
15470 WDI_EventInfoType* pEventData
15471)
15472{
15473 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15474 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015475 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015476 wpt_uint16 usDataOffset = 0;
15477 wpt_uint16 usSendSize = 0;
15478 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015479 wpt_uint8 ucCurrentBSSSesIdx = 0;
15480 WDI_BSSSessionType* pBSSSes = NULL;
15481
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15483
15484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 -------------------------------------------------------------------------*/
15487 if (( NULL == pEventData ) ||
15488 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15489 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15490 {
15491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15492 "Invalid parameters in Keep Alive req");
15493 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015494 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 }
15496
15497 /*-----------------------------------------------------------------------
15498 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 sizeof(keepAliveReq),
15503 &pSendBuffer, &usDataOffset, &usSendSize))||
15504 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15505 {
15506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015507 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15509 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015510 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 }
15512
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015513 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15514 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15515 &pBSSSes);
15516 if ( NULL == pBSSSes )
15517 {
15518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015519 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015520 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015521 }
15522
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15524 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15525
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015526 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015527
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15529 {
15530 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15531 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15532 HAL_IPV4_ADDR_LEN);
15533 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15534 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 wpalMemoryCopy(keepAliveReq.destMacAddr,
15537 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15538 HAL_MAC_ADDR_LEN);
15539 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015540
15541 wpalMemoryCopy( pSendBuffer+usDataOffset,
15542 &keepAliveReq,
15543 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015544
15545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015546 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015547
15548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015549 "Process keep alive req time period %d",
15550 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015551
15552 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015553 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015554
15555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15556 "Sending keep alive req to HAL");
15557
15558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15562 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015563
15564fail:
15565 // Release the message buffer so we don't leak
15566 wpalMemoryFree(pSendBuffer);
15567
15568failRequest:
15569 //WDA should have failure check to avoid the memory leak
15570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015571}/*WDI_ProcessKeepAliveReq*/
15572
15573
15574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015577
15578 @param pWDICtx: pointer to the WLAN DAL context
15579 pEventData: pointer to the event information structure
15580
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 @see
15582 @return Result of the function call
15583*/
15584WDI_Status
15585WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015586(
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 WDI_ControlBlockType* pWDICtx,
15588 WDI_EventInfoType* pEventData
15589)
15590{
15591 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15592 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 wpt_uint16 usDataOffset = 0;
15595 wpt_uint16 usSendSize = 0;
15596 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015597 wpt_uint8 ucCurrentBSSSesIdx = 0;
15598 WDI_BSSSessionType* pBSSSes = NULL;
15599
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15601
15602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 -------------------------------------------------------------------------*/
15605 if (( NULL == pEventData ) ||
15606 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15607 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15608 {
15609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015612 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 }
15614
15615 /*-----------------------------------------------------------------------
15616 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015620 sizeof(wowlAddBcPtrnReq),
15621 &pSendBuffer, &usDataOffset, &usSendSize))||
15622 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15623 {
15624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015625 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015626 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15627 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015628 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 }
15630
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015631 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15632 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15633 &pBSSSes);
15634 if ( NULL == pBSSSes )
15635 {
15636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015637 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015638 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015639 }
15640
Jeff Johnsone7245742012-09-05 17:12:55 -070015641 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15649
15650 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15651 {
15652 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15653 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15654 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15655 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15656 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15657 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15658 }
15659 else
15660 {
15661 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15662 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15663 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15664 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15665 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15666 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15667
15668 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15669 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15670 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15671 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15672 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15673 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15674 }
15675
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015676 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15677
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 wpalMemoryCopy( pSendBuffer+usDataOffset,
15679 &wowlAddBcPtrnReq,
15680 sizeof(wowlAddBcPtrnReq));
15681
15682 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015684
15685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15689 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015690fail:
15691 // Release the message buffer so we don't leak
15692 wpalMemoryFree(pSendBuffer);
15693
15694failRequest:
15695 //WDA should have failure check to avoid the memory leak
15696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015697}/*WDI_ProcessWowlAddBcPtrnReq*/
15698
15699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015700 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015701 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015702
15703 @param pWDICtx: pointer to the WLAN DAL context
15704 pEventData: pointer to the event information structure
15705
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 @see
15707 @return Result of the function call
15708*/
15709WDI_Status
15710WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015711(
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 WDI_ControlBlockType* pWDICtx,
15713 WDI_EventInfoType* pEventData
15714)
15715{
15716 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15717 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 wpt_uint16 usDataOffset = 0;
15720 wpt_uint16 usSendSize = 0;
15721 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015722 wpt_uint8 ucCurrentBSSSesIdx = 0;
15723 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15725
15726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 -------------------------------------------------------------------------*/
15729 if (( NULL == pEventData ) ||
15730 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15731 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15732 {
15733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015736 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 }
15738
15739 /*-----------------------------------------------------------------------
15740 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015741 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 sizeof(wowlDelBcPtrnReq),
15745 &pSendBuffer, &usDataOffset, &usSendSize))||
15746 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15747 {
15748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015749 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15751 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015752 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015753 }
15754
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015755 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15756 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15757 &pBSSSes);
15758 if ( NULL == pBSSSes )
15759 {
15760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015761 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015762 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015763 }
15764
Jeff Johnsone7245742012-09-05 17:12:55 -070015765 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015766 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015767
15768 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15769
Jeff Johnsone7245742012-09-05 17:12:55 -070015770 wpalMemoryCopy( pSendBuffer+usDataOffset,
15771 &wowlDelBcPtrnReq,
15772 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015773
15774 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015776
15777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15781 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015782
15783fail:
15784 // Release the message buffer so we don't leak
15785 wpalMemoryFree(pSendBuffer);
15786
15787failRequest:
15788 //WDA should have failure check to avoid the memory leak
15789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015790}/*WDI_ProcessWowlDelBcPtrnReq*/
15791
15792/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015795
15796 @param pWDICtx: pointer to the WLAN DAL context
15797 pEventData: pointer to the event information structure
15798
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 @see
15800 @return Result of the function call
15801*/
15802WDI_Status
15803WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015804(
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 WDI_ControlBlockType* pWDICtx,
15806 WDI_EventInfoType* pEventData
15807)
15808{
15809 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15810 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015811 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015812 wpt_uint16 usDataOffset = 0;
15813 wpt_uint16 usSendSize = 0;
15814 tHalWowlEnterParams wowlEnterReq;
15815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15816
15817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015819 -------------------------------------------------------------------------*/
15820 if (( NULL == pEventData ) ||
15821 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15822 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15823 {
15824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015825 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015828 }
15829
15830 /*-----------------------------------------------------------------------
15831 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015832 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015833 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015834 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 sizeof(wowlEnterReq),
15836 &pSendBuffer, &usDataOffset, &usSendSize))||
15837 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15838 {
15839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015840 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 }
15845
Kumar Anandaca924e2013-07-22 14:35:34 -070015846 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15847
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015858 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015859 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15864
15865#ifdef WLAN_WAKEUP_EVENTS
15866 wowlEnterReq.ucWoWEAPIDRequestEnable =
15867 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15868
15869 wowlEnterReq.ucWoWEAPOL4WayEnable =
15870 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15871
15872 wowlEnterReq.ucWowNetScanOffloadMatch =
15873 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15874
15875 wowlEnterReq.ucWowGTKRekeyError =
15876 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15877
15878 wowlEnterReq.ucWoWBSSConnLoss =
15879 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15880#endif // WLAN_WAKEUP_EVENTS
15881
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015882 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15883
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15885 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15886 sizeof(tSirMacAddr));
15887
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 wpalMemoryCopy( pSendBuffer+usDataOffset,
15889 &wowlEnterReq,
15890 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015891
15892 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015894
15895 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015896 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15899 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015900}/*WDI_ProcessWowlEnterReq*/
15901
15902/**
15903 @brief Process Wowl exit Request function (called when Main FSM
15904 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015905
15906 @param pWDICtx: pointer to the WLAN DAL context
15907 pEventData: pointer to the event information structure
15908
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 @see
15910 @return Result of the function call
15911*/
15912WDI_Status
15913WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015914(
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 WDI_ControlBlockType* pWDICtx,
15916 WDI_EventInfoType* pEventData
15917)
15918{
15919 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015920 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 wpt_uint16 usDataOffset = 0;
15923 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015924 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15926
15927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 -------------------------------------------------------------------------*/
15930 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015931 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15933 {
15934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 }
15939
15940 /*-----------------------------------------------------------------------
15941 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015942 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015943 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015945 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015946 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015947 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 {
15949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015950 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 pEventData, wdiWowlExitCb);
15952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 }
15955
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015956 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15957
15958 wpalMemoryCopy( pSendBuffer+usDataOffset,
15959 &wowlExitparams,
15960 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15965 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015966}/*WDI_ProcessWowlExitReq*/
15967
15968/**
15969 @brief Process Configure Apps Cpu Wakeup State Request function
15970 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015971
15972 @param pWDICtx: pointer to the WLAN DAL context
15973 pEventData: pointer to the event information structure
15974
Jeff Johnson295189b2012-06-20 16:38:30 -070015975 @see
15976 @return Result of the function call
15977*/
15978WDI_Status
15979WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015980(
Jeff Johnson295189b2012-06-20 16:38:30 -070015981 WDI_ControlBlockType* pWDICtx,
15982 WDI_EventInfoType* pEventData
15983)
15984{
15985 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15986 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 wpt_uint16 usDataOffset = 0;
15989 wpt_uint16 usSendSize = 0;
15990 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15992
15993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015995 -------------------------------------------------------------------------*/
15996 if (( NULL == pEventData ) ||
15997 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15998 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15999 {
16000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016004 }
16005
16006 /*-----------------------------------------------------------------------
16007 Get message buffer
16008 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 sizeof(halCfgAppsCpuWakeupStateReqParams),
16011 &pSendBuffer, &usDataOffset, &usSendSize))||
16012 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
16013 {
16014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016015 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
16017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 }
16020
Jeff Johnsone7245742012-09-05 17:12:55 -070016021 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070016022 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
16023
Jeff Johnsone7245742012-09-05 17:12:55 -070016024 wpalMemoryCopy( pSendBuffer+usDataOffset,
16025 &halCfgAppsCpuWakeupStateReqParams,
16026 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016027
16028 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016030
16031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16035 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
16036 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016037}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
16038
16039#ifdef WLAN_FEATURE_VOWIFI_11R
16040/**
16041 @brief Process Aggregated Add TSpec Request function (called when Main FSM
16042 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016043
16044 @param pWDICtx: pointer to the WLAN DAL context
16045 pEventData: pointer to the event information structure
16046
Jeff Johnson295189b2012-06-20 16:38:30 -070016047 @see
16048 @return Result of the function call
16049*/
16050WDI_Status
16051WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016052(
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 WDI_ControlBlockType* pWDICtx,
16054 WDI_EventInfoType* pEventData
16055)
16056{
16057 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16058 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016059 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016060 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016061 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016062 wpt_uint16 usDataOffset = 0;
16063 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016064 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 wpt_macAddr macBSSID;
16066 tAggrAddTsReq halAggrAddTsReq;
16067 int i;
16068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16069
16070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 -------------------------------------------------------------------------*/
16073 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16074 ( NULL == pEventData->pCBfnc ))
16075 {
16076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 }
16081 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16082 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16083 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16084 /*-------------------------------------------------------------------------
16085 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016086 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 -------------------------------------------------------------------------*/
16088 wpalMutexAcquire(&pWDICtx->wptMutex);
16089
16090 /*------------------------------------------------------------------------
16091 Find the BSS for which the request is made and identify WDI session
16092 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016093 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16094 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016095 &macBSSID))
16096 {
16097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016098 "This station does not exist in the WDI Station Table %d",
16099 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 }
16103
Jeff Johnsone7245742012-09-05 17:12:55 -070016104 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16105 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016106 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16108 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16109 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016110
16111 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016113 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016114
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 /*------------------------------------------------------------------------
16116 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 ------------------------------------------------------------------------*/
16119 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16120 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16122 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16123 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016124
Jeff Johnsone7245742012-09-05 17:12:55 -070016125 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016126 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016127 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 }
16129
16130 wpalMutexRelease(&pWDICtx->wptMutex);
16131 /*-----------------------------------------------------------------------
16132 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 sizeof(tAggrAddTsParams),
16137 &pSendBuffer, &usDataOffset, &usSendSize))||
16138 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16139 {
16140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016141 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 }
16146
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16151
16152 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16153 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016154 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16160 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16163 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16166 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16169 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16172 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016173 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16175 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016176 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016177 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16178 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16181 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016182 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016183 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016184 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016185 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016186
16187
16188 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016194 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016195 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016196 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016208 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016209 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016210 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016211 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016212 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016213 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016214 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016215 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016216 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016217 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16218 }
16219
Jeff Johnsone7245742012-09-05 17:12:55 -070016220 wpalMemoryCopy( pSendBuffer+usDataOffset,
16221 &halAggrAddTsReq,
16222 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016223
16224 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016226
16227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016228 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016230 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016232 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016233}/*WDI_ProcessAggrAddTSpecReq*/
16234#endif /* WLAN_FEATURE_VOWIFI_11R */
16235
16236/**
16237 @brief Process Shutdown Request function (called when Main FSM
16238 allows it)
16239
16240 @param pWDICtx: pointer to the WLAN DAL context
16241 pEventData: pointer to the event information structure
16242
16243 @see
16244 @return Result of the function call
16245*/
16246WDI_Status
16247WDI_ProcessShutdownReq
16248(
16249 WDI_ControlBlockType* pWDICtx,
16250 WDI_EventInfoType* pEventData
16251 )
16252{
16253 wpt_status wptStatus;
16254
16255
16256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16257
16258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 -------------------------------------------------------------------------*/
16261 if ( NULL == pEventData )
16262 {
16263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 WDI_ASSERT(0);
16266 return WDI_STATUS_E_FAILURE;
16267 }
16268
16269 wpalMutexAcquire(&pWDICtx->wptMutex);
16270
16271
16272 gWDIInitialized = eWLAN_PAL_FALSE;
16273 /*! TO DO: stop the data services */
16274 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16275 {
16276 /*Stop the STA Table !UT- check this logic again
16277 It is safer to do it here than on the response - because a stop is imminent*/
16278 WDI_STATableStop(pWDICtx);
16279
16280 /* Stop Transport Driver, DXE */
16281 WDTS_Stop(pWDICtx);
16282 }
16283
16284 /*Clear all pending request*/
16285 WDI_ClearPendingRequests(pWDICtx);
16286 /* Close Data transport*/
16287 /* FTM mode does not open Data Path */
16288 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16289 {
16290 WDTS_Close(pWDICtx);
16291 }
16292 /*Close the STA Table !UT- check this logic again*/
16293 WDI_STATableClose(pWDICtx);
16294 /*close the PAL */
16295 wptStatus = wpalClose(pWDICtx->pPALContext);
16296 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16297 {
16298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16299 "Failed to wpal Close %d", wptStatus);
16300 WDI_ASSERT(0);
16301 }
16302
16303 /*Transition back to init state*/
16304 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16305
16306 wpalMutexRelease(&pWDICtx->wptMutex);
16307
16308 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016309 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016310
16311
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016313}/*WDI_ProcessShutdownReq*/
16314
16315/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016316 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016317========================================================================*/
16318
16319/**
16320 @brief Process Start Response function (called when a response
16321 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016322
16323 @param pWDICtx: pointer to the WLAN DAL context
16324 pEventData: pointer to the event information structure
16325
Jeff Johnson295189b2012-06-20 16:38:30 -070016326 @see
16327 @return Result of the function call
16328*/
16329WDI_Status
16330WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016331(
Jeff Johnson295189b2012-06-20 16:38:30 -070016332 WDI_ControlBlockType* pWDICtx,
16333 WDI_EventInfoType* pEventData
16334)
16335{
16336 WDI_StartRspParamsType wdiRspParams;
16337 WDI_StartRspCb wdiStartRspCb = NULL;
16338
16339 tHalMacStartRspParams* startRspParams;
16340
16341#ifndef HAL_SELF_STA_PER_BSS
16342 WDI_AddStaParams wdiAddSTAParam = {0};
16343#endif
16344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16345
Jeff Johnsone7245742012-09-05 17:12:55 -070016346 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 -------------------------------------------------------------------------*/
16350 if (( NULL == pEventData ) ||
16351 ( NULL == pEventData->pEventData) ||
16352 ( NULL == wdiStartRspCb ))
16353 {
16354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016358 }
16359
16360 /*-------------------------------------------------------------------------
16361 Extract response and send it to UMAC
16362 -------------------------------------------------------------------------*/
16363 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16364 {
16365 // not enough data was received
16366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016367 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016368 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 }
16372
16373 /*-------------------------------------------------------------------------
16374 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016375 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016376 -------------------------------------------------------------------------*/
16377 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16378
16379 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16380 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16381 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16382 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16383 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16384 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16385 wdiRspParams.wlanReportedVersion.major =
16386 startRspParams->wcnssWlanVersion.major;
16387 wdiRspParams.wlanReportedVersion.minor =
16388 startRspParams->wcnssWlanVersion.minor;
16389 wdiRspParams.wlanReportedVersion.version =
16390 startRspParams->wcnssWlanVersion.version;
16391 wdiRspParams.wlanReportedVersion.revision =
16392 startRspParams->wcnssWlanVersion.revision;
16393 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16394 startRspParams->wcnssCrmVersionString,
16395 sizeof(wdiRspParams.wcnssSoftwareVersion));
16396 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16397 startRspParams->wcnssWlanVersionString,
16398 sizeof(wdiRspParams.wcnssHardwareVersion));
16399 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16400
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016401 /*Save the HAL Version*/
16402 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16403
Jeff Johnson295189b2012-06-20 16:38:30 -070016404 wpalMutexAcquire(&pWDICtx->wptMutex);
16405 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16406 {
16407 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16408
16409 /*Cache the start response for further use*/
16410 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016411 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016412 sizeof(pWDICtx->wdiCachedStartRspParams));
16413
16414 }
16415 else
16416 {
16417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16418 "Failed to start device with status %s(%d)",
16419 WDI_getHALStatusMsgString(startRspParams->status),
16420 startRspParams->status);
16421
16422 /*Set the expected state transition to stopped - because the start has
16423 failed*/
16424 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16425
16426 wpalMutexRelease(&pWDICtx->wptMutex);
16427
16428 /*Notify UMAC*/
16429 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016430
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016432 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016433
16434 /*Although the response is an error - it was processed by our function
16435 so as far as the caller is concerned this is a succesful reponse processing*/
16436 return WDI_STATUS_SUCCESS;
16437 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016438
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 wpalMutexRelease(&pWDICtx->wptMutex);
16440
16441 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16442 {
16443 /* FTM mode does not need to execute below */
16444 /* Notify UMAC */
16445 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16446 return WDI_STATUS_SUCCESS;
16447 }
16448
16449 /* START the Data transport */
16450 WDTS_startTransport(pWDICtx);
16451
16452 /*Start the STA Table !- check this logic again*/
16453 WDI_STATableStart(pWDICtx);
16454
16455#ifndef HAL_SELF_STA_PER_BSS
16456 /* Store the Self STA Index */
16457 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16458
16459 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16460 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16461 WDI_MAC_ADDR_LEN);
16462
16463 /* At this point add the self-STA */
16464
16465 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16466 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16467 /*! TO DO: wdiAddSTAParam.dpuSig */
16468 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16469 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16470 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16471
16472 //all DPU indices are the same for self STA
16473 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16474 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016475 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016476 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16477 WDI_MAC_ADDR_LEN);
16478 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16479 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16480
16481 /* Note: Since we don't get an explicit config STA request for self STA, we
16482 add the self STA upon receiving the Start response message. But the
16483 self STA entry in the table is deleted when WDI gets an explicit delete STA
16484 request */
16485 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16486#endif
16487
16488 /*Notify UMAC*/
16489 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16490
Jeff Johnsone7245742012-09-05 17:12:55 -070016491 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016492}/*WDI_ProcessStartRsp*/
16493
16494
16495/**
16496 @brief Process Stop Response function (called when a response
16497 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016498
16499 @param pWDICtx: pointer to the WLAN DAL context
16500 pEventData: pointer to the event information structure
16501
Jeff Johnson295189b2012-06-20 16:38:30 -070016502 @see
16503 @return Result of the function call
16504*/
16505WDI_Status
16506WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016507(
Jeff Johnson295189b2012-06-20 16:38:30 -070016508 WDI_ControlBlockType* pWDICtx,
16509 WDI_EventInfoType* pEventData
16510)
16511{
16512 WDI_Status wdiStatus;
16513 WDI_StopRspCb wdiStopRspCb = NULL;
16514
Jeff Johnsone7245742012-09-05 17:12:55 -070016515 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16517
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 -------------------------------------------------------------------------*/
16522 if (( NULL == pEventData ) ||
16523 ( NULL == pEventData->pEventData) ||
16524 ( NULL == wdiStopRspCb ))
16525 {
16526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 }
16531
16532 /*-------------------------------------------------------------------------
16533 Extract response and send it to UMAC
16534 -------------------------------------------------------------------------*/
16535 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16536 {
16537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016538 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016539 pEventData->uEventDataSize);
16540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 }
16543
16544 /*-------------------------------------------------------------------------
16545 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016546 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016547 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16549 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016550 sizeof(halMacStopRspMsg.stopRspParams));
16551
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016553
16554 wpalMutexAcquire(&pWDICtx->wptMutex);
16555
16556 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016557 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 --------------------------------------------------------------------------*/
16559 if ( WDI_STATUS_SUCCESS != wdiStatus )
16560 {
16561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16562 "Failed to stop the device with status %s (%d)",
16563 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16564 halMacStopRspMsg.stopRspParams.status);
16565
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016567 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016568
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016572
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16574
16575 /*Transition now as WDI may get preempted imediately after it sends
16576 up the Stop Response and it will not get to process the state transition
16577 from Main Rsp function*/
16578 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16579 wpalMutexRelease(&pWDICtx->wptMutex);
16580
16581 /*! TO DO: - STOP the Data transport */
16582
16583 /*Notify UMAC*/
16584 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16585
Jeff Johnsone7245742012-09-05 17:12:55 -070016586 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016587}/*WDI_ProcessStopRsp*/
16588
16589/**
16590 @brief Process Close Rsp function (called when a response
16591 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016592
16593 @param pWDICtx: pointer to the WLAN DAL context
16594 pEventData: pointer to the event information structure
16595
Jeff Johnson295189b2012-06-20 16:38:30 -070016596 @see
16597 @return Result of the function call
16598*/
16599WDI_Status
16600WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016601(
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 WDI_ControlBlockType* pWDICtx,
16603 WDI_EventInfoType* pEventData
16604)
16605{
16606 /*There is no close response comming from HAL - function just kept for
16607 simmetry */
16608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016610}/*WDI_ProcessCloseRsp*/
16611
16612
16613/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016614 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016615============================================================================*/
16616
16617/**
16618 @brief Process Init Scan Rsp function (called when a response
16619 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016620
16621 @param pWDICtx: pointer to the WLAN DAL context
16622 pEventData: pointer to the event information structure
16623
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 @see
16625 @return Result of the function call
16626*/
16627WDI_Status
16628WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016629(
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 WDI_ControlBlockType* pWDICtx,
16631 WDI_EventInfoType* pEventData
16632)
16633{
16634 WDI_Status wdiStatus;
16635 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016636 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016637 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16639
16640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016642 -------------------------------------------------------------------------*/
16643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16644 ( NULL == pEventData->pEventData))
16645 {
16646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 }
16651
16652 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16653 if( NULL == wdiInitScanRspCb)
16654 {
16655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016656 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 }
16660
16661 /*-------------------------------------------------------------------------
16662 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16666 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 sizeof(halInitScanRspMsg.initScanRspParams));
16668
Jeff Johnsone7245742012-09-05 17:12:55 -070016669 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016670
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016671 if (pWDICtx->bInBmps && (WDI_STATUS_SUCCESS == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070016672 {
16673 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016674 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16675 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016677 "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 -080016678 WDI_ASSERT(0);
16679 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 }
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016681 else
16682 {
16683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16684 "Error returned WDI_ProcessInitScanRspi:%d BMPS%d",
16685 wdiStatus, pWDICtx->bInBmps);
16686 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016687
16688 /*Notify UMAC*/
16689 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16690
Jeff Johnsone7245742012-09-05 17:12:55 -070016691 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016692}/*WDI_ProcessInitScanRsp*/
16693
16694
16695/**
16696 @brief Process Start Scan Rsp function (called when a response
16697 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016698
16699 @param pWDICtx: pointer to the WLAN DAL context
16700 pEventData: pointer to the event information structure
16701
Jeff Johnson295189b2012-06-20 16:38:30 -070016702 @see
16703 @return Result of the function call
16704*/
16705WDI_Status
16706WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016707(
Jeff Johnson295189b2012-06-20 16:38:30 -070016708 WDI_ControlBlockType* pWDICtx,
16709 WDI_EventInfoType* pEventData
16710)
16711{
16712 WDI_StartScanRspParamsType wdiStartScanParams;
16713 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016714
16715 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16717
16718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 -------------------------------------------------------------------------*/
16721 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16722 ( NULL == pEventData->pEventData))
16723 {
16724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016728 }
16729
16730 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16731 if( NULL == wdiStartScanRspCb)
16732 {
16733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016734 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016737 }
16738
16739 /*-------------------------------------------------------------------------
16740 Extract response and send it to UMAC
16741 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16743 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 sizeof(halStartScanRspMsg.startScanRspParams));
16745
16746 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16747 halStartScanRspMsg.startScanRspParams.status);
16748#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016749 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016750 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016751 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016752 halStartScanRspMsg.startScanRspParams.startTSF,
16753 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016754#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016755
16756 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16757 {
16758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16759 "Start scan failed with status %s (%d)",
16760 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16761 halStartScanRspMsg.startScanRspParams.status);
16762 /* send the status to UMAC, don't return from here*/
16763 }
16764
16765 /*Notify UMAC*/
16766 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16767
Jeff Johnsone7245742012-09-05 17:12:55 -070016768 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016769
16770}/*WDI_ProcessStartScanRsp*/
16771
16772
16773/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016775 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016776
16777 @param pWDICtx: pointer to the WLAN DAL context
16778 pEventData: pointer to the event information structure
16779
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 @see
16781 @return Result of the function call
16782*/
16783WDI_Status
16784WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016785(
Jeff Johnson295189b2012-06-20 16:38:30 -070016786 WDI_ControlBlockType* pWDICtx,
16787 WDI_EventInfoType* pEventData
16788)
16789{
16790 WDI_Status wdiStatus;
16791 tHalEndScanRspMsg halEndScanRspMsg;
16792 WDI_EndScanRspCb wdiEndScanRspCb;
16793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16794
16795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 -------------------------------------------------------------------------*/
16798 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16799 ( NULL == pEventData->pEventData))
16800 {
16801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016802 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016803 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016804 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 }
16806
16807 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16808
16809 /*-------------------------------------------------------------------------
16810 Extract response and send it to UMAC
16811 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16813 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 sizeof(halEndScanRspMsg.endScanRspParams));
16815
Jeff Johnsone7245742012-09-05 17:12:55 -070016816 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016817
16818 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16819 {
16820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16821 "End Scan failed with status %s (%d )",
16822 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16823 halEndScanRspMsg.endScanRspParams.status);
16824 /* send the status to UMAC, don't return from here*/
16825 }
16826
16827 /*Notify UMAC*/
16828 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16829
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016831}/*WDI_ProcessEndScanRsp*/
16832
16833
16834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016837
16838 @param pWDICtx: pointer to the WLAN DAL context
16839 pEventData: pointer to the event information structure
16840
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 @see
16842 @return Result of the function call
16843*/
16844WDI_Status
16845WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016846(
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 WDI_ControlBlockType* pWDICtx,
16848 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016849)
Jeff Johnson295189b2012-06-20 16:38:30 -070016850{
16851 WDI_Status wdiStatus;
16852 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016853
16854 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16856
16857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 -------------------------------------------------------------------------*/
16860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16861 ( NULL == pEventData->pEventData))
16862 {
16863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 }
16868
16869 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16870
16871 /*-------------------------------------------------------------------------
16872 Extract response and send it to UMAC
16873 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016874 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16875 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016876 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16877
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016879
16880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 halFinishScanRspMsg.finishScanRspParams.status);
16883
16884 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16885 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16886 {
16887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16888 "Finish Scan failed with status %s (%d)",
16889 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16890 halFinishScanRspMsg.finishScanRspParams.status);
16891 /* send the status to UMAC, don't return from here*/
16892 }
16893
16894 /*Notify UMAC*/
16895 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16896
Jeff Johnsone7245742012-09-05 17:12:55 -070016897 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016898}/*WDI_ProcessFinishScanRsp*/
16899
16900/**
16901 @brief Process Join Response function (called when a response
16902 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016903
16904 @param pWDICtx: pointer to the WLAN DAL context
16905 pEventData: pointer to the event information structure
16906
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 @see
16908 @return Result of the function call
16909*/
16910WDI_Status
16911WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016912(
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 WDI_ControlBlockType* pWDICtx,
16914 WDI_EventInfoType* pEventData
16915)
16916{
16917 WDI_Status wdiStatus;
16918 WDI_JoinRspCb wdiJoinRspCb;
16919 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016920
16921 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16923
16924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 -------------------------------------------------------------------------*/
16927 if (( NULL == pWDICtx ) ||
16928 ( NULL == pWDICtx->pfncRspCB ) ||
16929 ( NULL == pEventData ) ||
16930 ( NULL == pEventData->pEventData))
16931 {
16932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016936 }
16937
16938 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16939
16940 /*-------------------------------------------------------------------------
16941 Extract response and send it to UMAC
16942 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016943 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16944 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 sizeof(halJoinRspMsg.joinRspParams));
16946
Jeff Johnsone7245742012-09-05 17:12:55 -070016947 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016948
16949 wpalMutexAcquire(&pWDICtx->wptMutex);
16950
16951 /*-----------------------------------------------------------------------
16952 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016953 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016954 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16957 {
16958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16960 "association no longer in progress %d - mysterious HAL response",
16961 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016962
Jeff Johnsone7245742012-09-05 17:12:55 -070016963 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016965 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016966 }
16967
16968 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16969
16970 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016971 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016972 -----------------------------------------------------------------------*/
16973 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16974 {
16975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16976 "Join only allowed in Joining state - failure state is %d "
16977 "strange HAL response", pBSSSes->wdiAssocState);
16978
Jeff Johnsone7245742012-09-05 17:12:55 -070016979 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16980
Jeff Johnson295189b2012-06-20 16:38:30 -070016981 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016983 }
16984
16985
16986 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 -----------------------------------------------------------------------*/
16989 if ( WDI_STATUS_SUCCESS != wdiStatus )
16990 {
16991 /*Association was failed by HAL - remove session*/
16992 WDI_DeleteSession(pWDICtx, pBSSSes);
16993
16994 /*Association no longer in progress */
16995 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16996
16997 /*Association no longer in progress - prepare pending assoc for processing*/
16998 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016999
Jeff Johnson295189b2012-06-20 16:38:30 -070017000 }
17001 else
17002 {
17003 /*Transition to state Joining - this may be redundant as we are supposed
17004 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 }
17007
17008 wpalMutexRelease(&pWDICtx->wptMutex);
17009
17010 /*Notify UMAC*/
17011 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17012
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017014}/*WDI_ProcessJoinRsp*/
17015
17016
17017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017018 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017019 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017020
17021 @param pWDICtx: pointer to the WLAN DAL context
17022 pEventData: pointer to the event information structure
17023
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 @see
17025 @return Result of the function call
17026*/
17027WDI_Status
17028WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017029(
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 WDI_ControlBlockType* pWDICtx,
17031 WDI_EventInfoType* pEventData
17032)
17033{
17034 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
17035 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017036 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 WDI_BSSSessionType* pBSSSes = NULL;
17038
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 WDI_AddStaParams wdiBcastAddSTAParam = {0};
17041 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070017042
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17044
17045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 -------------------------------------------------------------------------*/
17048 if (( NULL == pEventData ) ||
17049 ( NULL == pEventData->pEventData))
17050 {
17051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 }
17056
17057 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17058
17059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017060 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17063 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 sizeof(halConfigBssRspMsg.configBssRspParams));
17065
17066 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17067 halConfigBssRspMsg.configBssRspParams.status);
17068 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17069 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17072 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017073
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017075
17076 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017078
17079 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017081
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017083
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017085 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017086 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17087 #endif
17088 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17089 halConfigBssRspMsg.configBssRspParams.staMac,
17090 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017091
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 wpalMutexAcquire(&pWDICtx->wptMutex);
17093 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017094 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017095 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017096 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17097 wdiConfigBSSParams.macBSSID,
17098 &pBSSSes);
17099
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 /*-----------------------------------------------------------------------
17101 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017102 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 -----------------------------------------------------------------------*/
17104 if ( NULL == pBSSSes )
17105 {
17106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17107 "Association sequence for this BSS does not yet exist "
17108 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017109
17110 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17111
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017115
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 /*Save data for this BSS*/
17117 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17118 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017121 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017124 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017125 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017126 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017127 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017128 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17129 pBSSSes->bcastStaIdx =
17130 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017131
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017133
Jeff Johnson295189b2012-06-20 16:38:30 -070017134 /*-------------------------------------------------------------------------
17135 Add Peer STA
17136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017138 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17139 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017140
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017143 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017144 wdiAddSTAParam.ucHTCapable =
17145 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17146 wdiAddSTAParam.ucStaType =
17147 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17148
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017150 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17151 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017153
17154 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17155 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17156 WDI_MAC_ADDR_LEN);
17157
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017159 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017161 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017163 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017164 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017165 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017166 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017167 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017168 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017169 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017170 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017171
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17173 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017174
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17176 /*-------------------------------------------------------------------------
17177 Add Broadcast STA only in AP mode
17178 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017180 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017181 {
17182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17183 "Add BCAST STA to table for index: %d",
17184 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017185
17186 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017188
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17190 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17191 }
17192 wpalMutexRelease(&pWDICtx->wptMutex);
17193 }
17194 else
17195 {
17196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17197 "Config BSS RSP failed with status : %s(%d)",
17198 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017199 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017200 halConfigBssRspMsg.configBssRspParams.status);
17201
Jeff Johnsone7245742012-09-05 17:12:55 -070017202
Jeff Johnson295189b2012-06-20 16:38:30 -070017203 /*Association was failed by HAL - remove session*/
17204 WDI_DeleteSession(pWDICtx, pBSSSes);
17205
17206 /*Association no longer in progress */
17207 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17208
17209 /*Association no longer in progress - prepare pending assoc for processing*/
17210 WDI_DequeueAssocRequest(pWDICtx);
17211
17212 }
17213
17214 /*Notify UMAC*/
17215 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17216
Jeff Johnsone7245742012-09-05 17:12:55 -070017217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017218}/*WDI_ProcessConfigBSSRsp*/
17219
17220
17221/**
17222 @brief Process Del BSS Response function (called when a response
17223 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017224
17225 @param pWDICtx: pointer to the WLAN DAL context
17226 pEventData: pointer to the event information structure
17227
Jeff Johnson295189b2012-06-20 16:38:30 -070017228 @see
17229 @return Result of the function call
17230*/
17231WDI_Status
17232WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017233(
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 WDI_ControlBlockType* pWDICtx,
17235 WDI_EventInfoType* pEventData
17236)
17237{
17238 WDI_DelBSSRspParamsType wdiDelBSSParams;
17239 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017240 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017241 WDI_BSSSessionType* pBSSSes = NULL;
17242
Jeff Johnsone7245742012-09-05 17:12:55 -070017243 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17245
17246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 -------------------------------------------------------------------------*/
17249 if (( NULL == pEventData ) ||
17250 ( NULL == pEventData->pEventData))
17251 {
17252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017253 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 }
17257
17258 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17259
17260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017263 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17264 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 sizeof(halDelBssRspMsg.deleteBssRspParams));
17266
17267
17268 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017269 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017270
17271 wpalMutexAcquire(&pWDICtx->wptMutex);
17272
17273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017274 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017275 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017276 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17277 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17278 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017279
17280 /*-----------------------------------------------------------------------
17281 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017282 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017283 -----------------------------------------------------------------------*/
17284 if ( NULL == pBSSSes )
17285 {
17286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17287 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017288 "association no longer in progress - mysterious HAL response");
17289
17290 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17291
17292 wpalMutexRelease(&pWDICtx->wptMutex);
17293 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017294 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017295
17296 /*Extract BSSID for the response to UMAC*/
17297 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17298 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17299
17300 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17301
17302 /*-----------------------------------------------------------------------
17303 The current session will be deleted
17304 -----------------------------------------------------------------------*/
17305 WDI_DeleteSession(pWDICtx, pBSSSes);
17306
17307
17308 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017309 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17310 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017311 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017312 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017313 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017314
17315 /* Delete the STA's in this BSS */
17316 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17317
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 wpalMutexRelease(&pWDICtx->wptMutex);
17319
17320 /*Notify UMAC*/
17321 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17322
Jeff Johnsone7245742012-09-05 17:12:55 -070017323 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017324}/*WDI_ProcessDelBSSRsp*/
17325
17326/**
17327 @brief Process Post Assoc Rsp function (called when a response
17328 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017329
17330 @param pWDICtx: pointer to the WLAN DAL context
17331 pEventData: pointer to the event information structure
17332
Jeff Johnson295189b2012-06-20 16:38:30 -070017333 @see
17334 @return Result of the function call
17335*/
17336WDI_Status
17337WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017338(
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 WDI_ControlBlockType* pWDICtx,
17340 WDI_EventInfoType* pEventData
17341)
17342{
17343 WDI_PostAssocRspParamsType wdiPostAssocParams;
17344 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017345 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017346 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17349
17350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017352 -------------------------------------------------------------------------*/
17353 if (( NULL == pEventData ) ||
17354 ( NULL == pEventData->pEventData))
17355 {
17356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 }
17361
17362 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17363
17364 /*-------------------------------------------------------------------------
17365 Extract response and send it to UMAC
17366 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017367 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17368 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017369 sizeof(halPostAssocRspMsg.postAssocRspParams));
17370
17371 /*Extract the Post Assoc STA Params */
17372
Jeff Johnsone7245742012-09-05 17:12:55 -070017373 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017376 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17379
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 wdiPostAssocParams.wdiStatus =
17381 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017382
17383 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17384 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17386 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 WDI_MAC_ADDR_LEN);
17388
17389 /* Extract Post Assoc BSS Params */
17390
Jeff Johnsone7245742012-09-05 17:12:55 -070017391 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17392 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17393 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017394
17395 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17396 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017397 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017398 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17399 .macSTA, WDI_MAC_ADDR_LEN);
17400
Jeff Johnsone7245742012-09-05 17:12:55 -070017401 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017402 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17403
Jeff Johnsone7245742012-09-05 17:12:55 -070017404 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17406
17407 wdiPostAssocParams.bssParams.ucBSSIdx =
17408 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17409
Jeff Johnsone7245742012-09-05 17:12:55 -070017410 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017411 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17412
17413 wpalMutexAcquire(&pWDICtx->wptMutex);
17414
17415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017416 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017417 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017418 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017420 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017421
17422 /*-----------------------------------------------------------------------
17423 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017424 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017425 -----------------------------------------------------------------------*/
17426 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017427 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17429 {
17430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17431 "Association sequence for this BSS does not yet exist or "
17432 "association no longer in progress - mysterious HAL response");
17433
Jeff Johnsone7245742012-09-05 17:12:55 -070017434 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17435
Jeff Johnson295189b2012-06-20 16:38:30 -070017436 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017438 }
17439
17440 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017441 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 -----------------------------------------------------------------------*/
17443 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17444 {
17445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17446 "Post Assoc not allowed before JOIN - failing request "
17447 "strange HAL response");
17448
Jeff Johnsone7245742012-09-05 17:12:55 -070017449 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17450
Jeff Johnson295189b2012-06-20 16:38:30 -070017451 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017453 }
17454
17455 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017456 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017457 -----------------------------------------------------------------------*/
17458 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17459 {
17460 /*Association was failed by HAL - remove session*/
17461 WDI_DeleteSession(pWDICtx, pBSSSes);
17462 }
17463 else
17464 {
17465 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017467
17468 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017469 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017472 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017473 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017474 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017475 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17477
Jeff Johnsone7245742012-09-05 17:12:55 -070017478 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017479 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17480 }
17481
17482 /*Association no longer in progress */
17483 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17484
17485 /*Association no longer in progress - prepare pending assoc for processing*/
17486 WDI_DequeueAssocRequest(pWDICtx);
17487
17488 wpalMutexRelease(&pWDICtx->wptMutex);
17489
17490 /*Notify UMAC*/
17491 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17492
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017494}/*WDI_ProcessPostAssocRsp*/
17495
17496/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017497 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017499
17500 @param pWDICtx: pointer to the WLAN DAL context
17501 pEventData: pointer to the event information structure
17502
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 @see
17504 @return Result of the function call
17505*/
17506WDI_Status
17507WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017508(
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 WDI_ControlBlockType* pWDICtx,
17510 WDI_EventInfoType* pEventData
17511)
17512{
17513 WDI_DelSTARspParamsType wdiDelSTARsp;
17514 WDI_DelSTARspCb wdiDelSTARspCb;
17515 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17518
17519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 -------------------------------------------------------------------------*/
17522 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17523 ( NULL == pEventData->pEventData))
17524 {
17525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017526 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017528 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 }
17530
17531 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17532
17533 /*-------------------------------------------------------------------------
17534 Extract response and send it to UMAC
17535 -------------------------------------------------------------------------*/
17536 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017537 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017538 sizeof(halDelStaRspMsg.delStaRspParams));
17539
17540 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017541 wdiDelSTARsp.wdiStatus =
17542 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017543
17544 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17545
17546 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17547 if(staType == WDI_STA_ENTRY_SELF)
17548 {
17549 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17550
17551 /* At this point add the self-STA */
17552
17553 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17554 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17555 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17556
17557#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17558#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17559
17560 //all DPU indices are the same for self STA
17561 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17562 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17563 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17564 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17565 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17566 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017567
17568 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 }
17570 else
17571 {
17572 //Delete the station in the table
17573 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17574 }
17575
17576 /*Notify UMAC*/
17577 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17578
Jeff Johnsone7245742012-09-05 17:12:55 -070017579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017580}/*WDI_ProcessDelSTARsp*/
17581
17582
17583/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017585==========================================================================*/
17586
17587/**
17588 @brief Process Set BSS Key Rsp function (called when a response
17589 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017590
17591 @param pWDICtx: pointer to the WLAN DAL context
17592 pEventData: pointer to the event information structure
17593
Jeff Johnson295189b2012-06-20 16:38:30 -070017594 @see
17595 @return Result of the function call
17596*/
17597WDI_Status
17598WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017599(
Jeff Johnson295189b2012-06-20 16:38:30 -070017600 WDI_ControlBlockType* pWDICtx,
17601 WDI_EventInfoType* pEventData
17602)
17603{
17604 WDI_Status wdiStatus;
17605 eHalStatus halStatus;
17606 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17608
17609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 -------------------------------------------------------------------------*/
17612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17613 ( NULL == pEventData->pEventData))
17614 {
17615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 }
17620
17621 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17622
17623 /*-------------------------------------------------------------------------
17624 Extract response and send it to UMAC
17625 -------------------------------------------------------------------------*/
17626 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017627 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017628
17629 if ( eHAL_STATUS_SUCCESS != halStatus )
17630 {
17631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17632 "Set BSS Key failed with status %s (%d)",
17633 WDI_getHALStatusMsgString(halStatus),
17634 halStatus);
17635 /* send the status to UMAC, don't return from here*/
17636 }
17637
17638 /*Notify UMAC*/
17639 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17640
Jeff Johnsone7245742012-09-05 17:12:55 -070017641 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017642}/*WDI_ProcessSetBssKeyRsp*/
17643
17644/**
17645 @brief Process Remove BSS Key Rsp function (called when a response
17646 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017647
17648 @param pWDICtx: pointer to the WLAN DAL context
17649 pEventData: pointer to the event information structure
17650
Jeff Johnson295189b2012-06-20 16:38:30 -070017651 @see
17652 @return Result of the function call
17653*/
17654WDI_Status
17655WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017656(
Jeff Johnson295189b2012-06-20 16:38:30 -070017657 WDI_ControlBlockType* pWDICtx,
17658 WDI_EventInfoType* pEventData
17659)
17660{
17661 WDI_Status wdiStatus;
17662 eHalStatus halStatus;
17663 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17665
17666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017668 -------------------------------------------------------------------------*/
17669 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17670 ( NULL == pEventData->pEventData))
17671 {
17672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017676 }
17677
17678 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17679
17680 /*-------------------------------------------------------------------------
17681 Extract response and send it to UMAC
17682 -------------------------------------------------------------------------*/
17683 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017684 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017685
17686 if ( eHAL_STATUS_SUCCESS != halStatus )
17687 {
17688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17689 "Remove BSS Key failed with status %s (%d )",
17690 WDI_getHALStatusMsgString(halStatus),
17691 halStatus);
17692 /* send the status to UMAC, don't return from here*/
17693 }
17694
17695 /*Notify UMAC*/
17696 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17697
Jeff Johnsone7245742012-09-05 17:12:55 -070017698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017699}/*WDI_ProcessSetBssKeyRsp*/
17700
17701
17702/**
17703 @brief Process Set STA Key Rsp function (called when a response
17704 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017705
17706 @param pWDICtx: pointer to the WLAN DAL context
17707 pEventData: pointer to the event information structure
17708
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 @see
17710 @return Result of the function call
17711*/
17712WDI_Status
17713WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017714(
Jeff Johnson295189b2012-06-20 16:38:30 -070017715 WDI_ControlBlockType* pWDICtx,
17716 WDI_EventInfoType* pEventData
17717)
17718{
17719 WDI_Status wdiStatus;
17720 eHalStatus halStatus;
17721 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17723
17724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017726 -------------------------------------------------------------------------*/
17727 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17728 ( NULL == pEventData->pEventData))
17729 {
17730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017734 }
17735
17736 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17737
17738 /*-------------------------------------------------------------------------
17739 Extract response and send it to UMAC
17740 -------------------------------------------------------------------------*/
17741 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017742 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017743
17744 if ( eHAL_STATUS_SUCCESS != halStatus )
17745 {
17746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17747 "Set STA Key failed with status %s (%d)",
17748 WDI_getHALStatusMsgString(halStatus),
17749 halStatus);
17750 /* send the status to UMAC, don't return from here*/
17751 }
17752
17753 /*Notify UMAC*/
17754 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17755
Jeff Johnsone7245742012-09-05 17:12:55 -070017756 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017757}/*WDI_ProcessSetSTAKeyRsp*/
17758
17759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017760 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017761 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017762
17763 @param pWDICtx: pointer to the WLAN DAL context
17764 pEventData: pointer to the event information structure
17765
Jeff Johnson295189b2012-06-20 16:38:30 -070017766 @see
17767 @return Result of the function call
17768*/
17769WDI_Status
17770WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017771(
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 WDI_ControlBlockType* pWDICtx,
17773 WDI_EventInfoType* pEventData
17774)
17775{
17776 WDI_Status wdiStatus;
17777 eHalStatus halStatus;
17778 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17780
17781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 -------------------------------------------------------------------------*/
17784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17785 ( NULL == pEventData->pEventData))
17786 {
17787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 }
17792
17793 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17794
17795 /*-------------------------------------------------------------------------
17796 Extract response and send it to UMAC
17797 -------------------------------------------------------------------------*/
17798 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017799 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017800
17801 if ( eHAL_STATUS_SUCCESS != halStatus )
17802 {
17803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17804 "Remove STA Key failed with status %s (%d)",
17805 WDI_getHALStatusMsgString(halStatus),
17806 halStatus);
17807 /* send the status to UMAC, don't return from here*/
17808 }
17809
17810 /*Notify UMAC*/
17811 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17812
Jeff Johnsone7245742012-09-05 17:12:55 -070017813 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017814}/*WDI_ProcessRemoveStaKeyRsp*/
17815
17816/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017817 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017819
17820 @param pWDICtx: pointer to the WLAN DAL context
17821 pEventData: pointer to the event information structure
17822
Jeff Johnson295189b2012-06-20 16:38:30 -070017823 @see
17824 @return Result of the function call
17825*/
17826WDI_Status
17827WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017828(
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 WDI_ControlBlockType* pWDICtx,
17830 WDI_EventInfoType* pEventData
17831)
17832{
17833 WDI_Status wdiStatus;
17834 eHalStatus halStatus;
17835 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17837
17838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 -------------------------------------------------------------------------*/
17841 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17842 ( NULL == pEventData->pEventData))
17843 {
17844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017848 }
17849
17850 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17851
17852 /*-------------------------------------------------------------------------
17853 Extract response and send it to UMAC
17854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017855 wpalMemoryCopy( &halStatus,
17856 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 sizeof(halStatus));
17858
Jeff Johnsone7245742012-09-05 17:12:55 -070017859 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017860
17861 if ( eHAL_STATUS_SUCCESS != halStatus )
17862 {
17863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17864 "Set STA Key failed with status %s (%d)",
17865 WDI_getHALStatusMsgString(halStatus),
17866 halStatus);
17867 /* send the status to UMAC, don't return from here*/
17868 }
17869
17870 /*Notify UMAC*/
17871 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17872
Jeff Johnsone7245742012-09-05 17:12:55 -070017873 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017874}/*WDI_ProcessSetSTABcastKeyRsp*/
17875
17876/**
17877 @brief Process Remove STA Bcast Key Rsp function (called when a
17878 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017879
17880 @param pWDICtx: pointer to the WLAN DAL context
17881 pEventData: pointer to the event information structure
17882
Jeff Johnson295189b2012-06-20 16:38:30 -070017883 @see
17884 @return Result of the function call
17885*/
17886WDI_Status
17887WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017888(
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 WDI_ControlBlockType* pWDICtx,
17890 WDI_EventInfoType* pEventData
17891)
17892{
17893 WDI_Status wdiStatus;
17894 eHalStatus halStatus;
17895 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17897
17898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 -------------------------------------------------------------------------*/
17901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17902 ( NULL == pEventData->pEventData))
17903 {
17904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017908 }
17909
17910 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17911
17912 /*-------------------------------------------------------------------------
17913 Extract response and send it to UMAC
17914 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 wpalMemoryCopy( &halStatus,
17916 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 sizeof(halStatus));
17918
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017920
17921 if ( eHAL_STATUS_SUCCESS != halStatus )
17922 {
17923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17924 "Remove STA Key failed with status %s (%d)",
17925 WDI_getHALStatusMsgString(halStatus),
17926 halStatus);
17927 /* send the status to UMAC, don't return from here*/
17928 }
17929
17930 /*Notify UMAC*/
17931 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17932
Jeff Johnsone7245742012-09-05 17:12:55 -070017933 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017934}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17935
17936
17937/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017939==========================================================================*/
17940
17941/**
17942 @brief Process Add TSpec Rsp function (called when a response
17943 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017944
17945 @param pWDICtx: pointer to the WLAN DAL context
17946 pEventData: pointer to the event information structure
17947
Jeff Johnson295189b2012-06-20 16:38:30 -070017948 @see
17949 @return Result of the function call
17950*/
17951WDI_Status
17952WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017953(
Jeff Johnson295189b2012-06-20 16:38:30 -070017954 WDI_ControlBlockType* pWDICtx,
17955 WDI_EventInfoType* pEventData
17956)
17957{
17958 WDI_Status wdiStatus;
17959 eHalStatus halStatus;
17960 WDI_AddTsRspCb wdiAddTsRspCb;
17961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17962
17963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017964 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017965 -------------------------------------------------------------------------*/
17966 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17967 ( NULL == pEventData->pEventData))
17968 {
17969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017970 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017973 }
17974
17975 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17976
17977 /*-------------------------------------------------------------------------
17978 Extract response and send it to UMAC
17979 -------------------------------------------------------------------------*/
17980 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017981 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017982
17983 /*Notify UMAC*/
17984 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17985
Jeff Johnsone7245742012-09-05 17:12:55 -070017986 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017987}/*WDI_ProcessAddTSpecRsp*/
17988
17989
Sunil Duttbd736ed2014-05-26 21:19:41 +053017990
17991#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17992
17993WDI_Status
17994WDI_ProcessLLStatsSetRsp
17995(
17996 WDI_ControlBlockType* pWDICtx,
17997 WDI_EventInfoType* pEventData
17998)
17999{
18000 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
18001
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018003 "%s: Enter ", __func__);
18004 /*-------------------------------------------------------------------------
18005 Sanity check
18006 -------------------------------------------------------------------------*/
18007 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18008 ( NULL == pEventData->pEventData))
18009 {
18010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18011 "%s: Invalid parameters", __func__);
18012 WDI_ASSERT(0);
18013 return WDI_STATUS_E_FAILURE;
18014 }
18015
18016 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
18017
18018 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18019
18020 return WDI_STATUS_SUCCESS;
18021}
18022
18023WDI_Status
18024WDI_ProcessLLStatsGetRsp
18025(
18026 WDI_ControlBlockType* pWDICtx,
18027 WDI_EventInfoType* pEventData
18028)
18029{
18030 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
18031
18032 /*-------------------------------------------------------------------------
18033 Sanity check
18034 -------------------------------------------------------------------------*/
18035 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18036 ( NULL == pEventData->pEventData))
18037 {
18038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18039 "%s: Invalid parameters", __func__);
18040 WDI_ASSERT(0);
18041 return WDI_STATUS_E_FAILURE;
18042 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018044 "%s: Enter ", __func__);
18045
18046 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
18047
18048 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18049
18050 return WDI_STATUS_SUCCESS;
18051}
18052
18053WDI_Status
18054WDI_ProcessLLStatsClearRsp
18055(
18056 WDI_ControlBlockType* pWDICtx,
18057 WDI_EventInfoType* pEventData
18058)
18059{
18060 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18061
18062 /*-------------------------------------------------------------------------
18063 Sanity check
18064 -------------------------------------------------------------------------*/
18065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18066 ( NULL == pEventData->pEventData))
18067 {
18068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18069 "%s: Invalid parameters", __func__);
18070 WDI_ASSERT(0);
18071 return WDI_STATUS_E_FAILURE;
18072 }
18073
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018075 "%s: CLEAR RESPONSE CALL BACK", __func__);
18076 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18077
18078 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18079
18080 return WDI_STATUS_SUCCESS;
18081}
18082#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18083
Jeff Johnson295189b2012-06-20 16:38:30 -070018084/**
18085 @brief Process Del TSpec Rsp function (called when a response
18086 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018087
18088 @param pWDICtx: pointer to the WLAN DAL context
18089 pEventData: pointer to the event information structure
18090
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 @see
18092 @return Result of the function call
18093*/
18094WDI_Status
18095WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018096(
Jeff Johnson295189b2012-06-20 16:38:30 -070018097 WDI_ControlBlockType* pWDICtx,
18098 WDI_EventInfoType* pEventData
18099)
18100{
18101 WDI_Status wdiStatus;
18102 eHalStatus halStatus;
18103 WDI_DelTsRspCb wdiDelTsRspCb;
18104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18105
18106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 -------------------------------------------------------------------------*/
18109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18110 ( NULL == pEventData->pEventData))
18111 {
18112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018116 }
18117
18118 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18119
18120 /*-------------------------------------------------------------------------
18121 Extract response and send it to UMAC
18122 -------------------------------------------------------------------------*/
18123 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018125
18126 /*Notify UMAC*/
18127 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18128
Jeff Johnsone7245742012-09-05 17:12:55 -070018129 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018130}/*WDI_ProcessDelTSpecRsp*/
18131
18132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018133 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018135
18136 @param pWDICtx: pointer to the WLAN DAL context
18137 pEventData: pointer to the event information structure
18138
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 @see
18140 @return Result of the function call
18141*/
18142WDI_Status
18143WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018144(
Jeff Johnson295189b2012-06-20 16:38:30 -070018145 WDI_ControlBlockType* pWDICtx,
18146 WDI_EventInfoType* pEventData
18147)
18148{
18149 WDI_Status wdiStatus;
18150 eHalStatus halStatus;
18151 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18153
18154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 -------------------------------------------------------------------------*/
18157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18158 ( NULL == pEventData->pEventData))
18159 {
18160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 }
18165
18166 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18167
18168 /*-------------------------------------------------------------------------
18169 Extract response and send it to UMAC
18170 -------------------------------------------------------------------------*/
18171 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018172 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018173
18174 /*Notify UMAC*/
18175 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18176
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018178}/*WDI_ProcessUpdateEDCAParamsRsp*/
18179
18180
18181/**
18182 @brief Process Add BA Rsp function (called when a response
18183 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018184
18185 @param pWDICtx: pointer to the WLAN DAL context
18186 pEventData: pointer to the event information structure
18187
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 @see
18189 @return Result of the function call
18190*/
18191WDI_Status
18192WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018193(
Jeff Johnson295189b2012-06-20 16:38:30 -070018194 WDI_ControlBlockType* pWDICtx,
18195 WDI_EventInfoType* pEventData
18196)
18197{
18198 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18199
18200 tAddBASessionRspParams halBASessionRsp;
18201 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18202
Jeff Johnsone7245742012-09-05 17:12:55 -070018203
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18205
18206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018208 -------------------------------------------------------------------------*/
18209 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18210 ( NULL == pEventData->pEventData))
18211 {
18212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018216 }
18217
18218 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18219
18220 /*-------------------------------------------------------------------------
18221 Extract response and send it to UMAC
18222 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018223 wpalMemoryCopy( &halBASessionRsp,
18224 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018225 sizeof(halBASessionRsp));
18226
18227 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18228
Jeff Johnson43971f52012-07-17 12:26:56 -070018229 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 {
18231 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18232 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18233 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18234 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18235 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18236 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18237 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18238 }
18239
18240 /*Notify UMAC*/
18241 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18242
Jeff Johnsone7245742012-09-05 17:12:55 -070018243 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018244}/*WDI_ProcessAddSessionBARsp*/
18245
18246
18247/**
18248 @brief Process Del BA Rsp function (called when a response
18249 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018250
18251 @param pWDICtx: pointer to the WLAN DAL context
18252 pEventData: pointer to the event information structure
18253
Jeff Johnson295189b2012-06-20 16:38:30 -070018254 @see
18255 @return Result of the function call
18256*/
18257WDI_Status
18258WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018259(
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 WDI_ControlBlockType* pWDICtx,
18261 WDI_EventInfoType* pEventData
18262)
18263{
18264 WDI_Status wdiStatus;
18265 eHalStatus halStatus;
18266 WDI_DelBARspCb wdiDelBARspCb;
18267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18268
18269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018271 -------------------------------------------------------------------------*/
18272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18273 ( NULL == pEventData->pEventData))
18274 {
18275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018279 }
18280
18281 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18282
18283 /*-------------------------------------------------------------------------
18284 Extract response and send it to UMAC
18285 -------------------------------------------------------------------------*/
18286 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018287 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018288
18289 if ( eHAL_STATUS_SUCCESS == halStatus )
18290 {
18291 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18292 }
18293
18294 /*Notify UMAC*/
18295 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18296
Jeff Johnsone7245742012-09-05 17:12:55 -070018297 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018298}/*WDI_ProcessDelBARsp*/
18299
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018300#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018301/**
18302 @brief Process TSM Stats Rsp function (called when a response
18303 is being received over the bus from HAL)
18304
18305 @param pWDICtx: pointer to the WLAN DAL context
18306 pEventData: pointer to the event information structure
18307
18308 @see
18309 @return Result of the function call
18310*/
18311WDI_Status
18312WDI_ProcessTsmStatsRsp
18313(
18314 WDI_ControlBlockType* pWDICtx,
18315 WDI_EventInfoType* pEventData
18316)
18317{
18318 WDI_TsmRspCb wdiTsmStatsRspCb;
18319 tTsmStatsRspMsg halTsmStatsRspMsg;
18320 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18322
18323 /*-------------------------------------------------------------------------
18324 Sanity check
18325 -------------------------------------------------------------------------*/
18326 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18327 ( NULL == pEventData->pEventData))
18328 {
18329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 WDI_ASSERT(0);
18332 return WDI_STATUS_E_FAILURE;
18333 }
18334
18335 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18336
18337 /*-------------------------------------------------------------------------
18338 Unpack HAL Response Message - the header was already extracted by the
18339 main Response Handling procedure
18340 -------------------------------------------------------------------------*/
18341 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18342 pEventData->pEventData,
18343 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18344
18345 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18346 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18347 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18348 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18349 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18350 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18351 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18352 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18353 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18354 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18355 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18356 halTsmStatsRspMsg.tsmStatsRspParams.status);
18357
18358 /*Notify UMAC*/
18359 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18360
18361 return WDI_STATUS_SUCCESS;
18362}/*WDI_ProcessTsmStatsRsp*/
18363
18364#endif
18365
18366
18367
18368/**
18369 @brief Process Flush AC Rsp function (called when a response
18370 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018371
18372 @param pWDICtx: pointer to the WLAN DAL context
18373 pEventData: pointer to the event information structure
18374
Jeff Johnson295189b2012-06-20 16:38:30 -070018375 @see
18376 @return Result of the function call
18377*/
18378WDI_Status
18379WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018380(
Jeff Johnson295189b2012-06-20 16:38:30 -070018381 WDI_ControlBlockType* pWDICtx,
18382 WDI_EventInfoType* pEventData
18383)
18384{
18385 WDI_Status wdiStatus;
18386 eHalStatus halStatus;
18387 WDI_FlushAcRspCb wdiFlushAcRspCb;
18388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18389
18390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018392 -------------------------------------------------------------------------*/
18393 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18394 ( NULL == pEventData->pEventData))
18395 {
18396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018400 }
18401
18402 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18403
18404 /*-------------------------------------------------------------------------
18405 Extract response and send it to UMAC
18406 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018407 wpalMemoryCopy( &halStatus,
18408 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 sizeof(halStatus));
18410
Jeff Johnsone7245742012-09-05 17:12:55 -070018411 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018412
18413 /*Notify UMAC*/
18414 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18415
Jeff Johnsone7245742012-09-05 17:12:55 -070018416 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018417}/*WDI_ProcessFlushAcRsp*/
18418
18419/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018420 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018422
18423 @param pWDICtx: pointer to the WLAN DAL context
18424 pEventData: pointer to the event information structure
18425
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 @see
18427 @return Result of the function call
18428*/
18429WDI_Status
18430WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018431(
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 WDI_ControlBlockType* pWDICtx,
18433 WDI_EventInfoType* pEventData
18434)
18435{
18436 WDI_Status wdiStatus;
18437 eHalStatus halStatus;
18438 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18440
18441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 -------------------------------------------------------------------------*/
18444 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18445 ( NULL == pEventData->pEventData))
18446 {
18447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018448 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 }
18452
18453 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18454
18455 /*-------------------------------------------------------------------------
18456 Extract response and send it to UMAC
18457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018458 wpalMemoryCopy( &halStatus,
18459 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018460 sizeof(halStatus));
18461
Jeff Johnsone7245742012-09-05 17:12:55 -070018462 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018463
18464 /*Notify UMAC*/
18465 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18466
Jeff Johnsone7245742012-09-05 17:12:55 -070018467 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018468}/*WDI_ProcessBtAmpEventRsp*/
18469
18470
18471/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018472 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018473 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018474
18475 @param pWDICtx: pointer to the WLAN DAL context
18476 pEventData: pointer to the event information structure
18477
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 @see
18479 @return Result of the function call
18480*/
18481WDI_Status
18482WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018483(
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 WDI_ControlBlockType* pWDICtx,
18485 WDI_EventInfoType* pEventData
18486)
18487{
18488 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18489 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18490 tAddStaSelfRspMsg halAddStaSelfRsp;
18491 WDI_AddStaParams wdiAddSTAParam = {0};
18492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18493
18494 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018495 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 -------------------------------------------------------------------------*/
18497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18498 ( NULL == pEventData->pEventData))
18499 {
18500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018504 }
18505
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018507 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18508
18509 /*-------------------------------------------------------------------------
18510 Extract response and send it to UMAC
18511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18513 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18515
18516
Jeff Johnsone7245742012-09-05 17:12:55 -070018517 wdiAddSTASelfParams.wdiStatus =
18518 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018519
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018522 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018524 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018525 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18526
18527 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18528 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18529 WDI_MAC_ADDR_LEN);
18530
18531
18532#ifdef HAL_SELF_STA_PER_BSS
18533
18534 /* At this point add the self-STA */
18535
18536 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18537 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18538 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18539
18540 //all DPU indices are the same for self STA
18541
18542 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018543 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18545 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18546 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18547 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18548 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18549
18550 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18551 WDI_MAC_ADDR_LEN);
18552
18553 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18554 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18555
Jeff Johnsone7245742012-09-05 17:12:55 -070018556 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18558 {
18559 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18560 }
18561#endif
18562
18563 /*Notify UMAC*/
18564 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18565
Jeff Johnsone7245742012-09-05 17:12:55 -070018566 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018567}/*WDI_ProcessAddSTASelfRsp*/
18568
18569
18570
18571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018572 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018574
18575 @param pWDICtx: pointer to the WLAN DAL context
18576 pEventData: pointer to the event information structure
18577
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 @see
18579 @return Result of the function call
18580*/
18581WDI_Status
18582WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018583(
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 WDI_ControlBlockType* pWDICtx,
18585 WDI_EventInfoType* pEventData
18586)
18587{
18588 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18589 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18590 tDelStaSelfRspParams delStaSelfRspParams;
18591 wpt_uint8 ucStaIdx;
18592
18593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18594
18595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018597 -------------------------------------------------------------------------*/
18598 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18599 ( NULL == pEventData->pEventData))
18600 {
18601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018602 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 }
18606
18607 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18608
18609 /*-------------------------------------------------------------------------
18610 Extract response and send it to UMAC
18611 -------------------------------------------------------------------------*/
18612
Jeff Johnsone7245742012-09-05 17:12:55 -070018613 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018614 (wpt_uint8*)pEventData->pEventData,
18615 sizeof(tDelStaSelfRspParams));
18616
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 wdiDelStaSelfRspParams.wdiStatus =
18618 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018619
Jeff Johnsone7245742012-09-05 17:12:55 -070018620 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018621 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18622 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18623 {
18624 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018625 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 delStaSelfRspParams.selfMacAddr,
18627 &ucStaIdx);
18628 if(WDI_STATUS_E_FAILURE == wdiStatus)
18629 {
18630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018631 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018634 }
18635 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18636 }
18637
18638 /*Notify UMAC*/
18639 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18640
18641 return WDI_STATUS_SUCCESS;
18642}
18643
Jeff Johnsone7245742012-09-05 17:12:55 -070018644#ifdef FEATURE_OEM_DATA_SUPPORT
18645/**
18646 @brief Start Oem Data Rsp function (called when a
18647 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018648
Jeff Johnsone7245742012-09-05 17:12:55 -070018649 @param pWDICtx: pointer to the WLAN DAL context
18650 pEventData: pointer to the event information structure
18651
18652 @see
18653 @return Result of the function call
18654*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018655
18656WDI_Status
18657WDI_ProcessStartOemDataRsp
18658(
18659 WDI_ControlBlockType* pWDICtx,
18660 WDI_EventInfoType* pEventData
18661)
18662{
18663 WDI_oemDataRspCb wdiOemDataRspCb;
18664 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18665 tStartOemDataRspParams* halStartOemDataRspParams;
18666
18667 /*-------------------------------------------------------------------------
18668 Sanity check
18669 -------------------------------------------------------------------------*/
18670 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18671 ( NULL == pEventData->pEventData))
18672 {
18673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018674 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018675 WDI_ASSERT(0);
18676 return WDI_STATUS_E_FAILURE;
18677 }
18678
18679 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18680
18681 /*-------------------------------------------------------------------------
18682 Extract response and send it to UMAC
18683 -------------------------------------------------------------------------*/
18684 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18685
18686
18687 //It is the responsibility of the application code to check for failure
18688 //conditions!
18689
18690 //Allocate memory for WDI OEM DATA RSP structure
18691 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18692
18693 if(NULL == wdiOemDataRspParams)
18694 {
18695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018696 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018697 pWDICtx, pEventData, pEventData->pEventData);
18698 WDI_ASSERT(0);
18699 return WDI_STATUS_E_FAILURE;
18700 }
18701
18702 /* Populate WDI structure members */
18703 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18704
18705 /*Notify UMAC*/
18706 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18707
18708 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18709 wpalMemoryFree(wdiOemDataRspParams);
18710
18711 return WDI_STATUS_SUCCESS;
18712}/*WDI_PrcoessStartOemDataRsp*/
18713#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018714
18715/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018716 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018717===========================================================================*/
18718
18719/**
18720 @brief Process Channel Switch Rsp function (called when a response
18721 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018722
18723 @param pWDICtx: pointer to the WLAN DAL context
18724 pEventData: pointer to the event information structure
18725
Jeff Johnson295189b2012-06-20 16:38:30 -070018726 @see
18727 @return Result of the function call
18728*/
18729WDI_Status
18730WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018731(
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 WDI_ControlBlockType* pWDICtx,
18733 WDI_EventInfoType* pEventData
18734)
18735{
18736 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18737 WDI_SwitchChRspCb wdiChSwitchRspCb;
18738 tSwitchChannelRspParams halSwitchChannelRsp;
18739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18740
18741 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018742 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 -------------------------------------------------------------------------*/
18744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18745 ( NULL == pEventData->pEventData))
18746 {
18747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018748 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018751 }
18752
18753 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18754
18755 /*-------------------------------------------------------------------------
18756 Extract response and send it to UMAC
18757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018758 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018759 (wpt_uint8*)pEventData->pEventData,
18760 sizeof(halSwitchChannelRsp));
18761
Jeff Johnsone7245742012-09-05 17:12:55 -070018762 wdiSwitchChRsp.wdiStatus =
18763 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18765
18766#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018767 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018768#endif
18769
18770 /*Notify UMAC*/
18771 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18772
Jeff Johnsone7245742012-09-05 17:12:55 -070018773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018774}/*WDI_ProcessChannelSwitchRsp*/
18775
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018776/**
18777 @brief Process Channel Switch Rsp function (called when a response
18778 is being received over the bus from HAL against
18779 WDI_ProcessChannelSwitchReq_V1)
18780
18781 @param pWDICtx: pointer to the WLAN DAL context
18782 pEventData: pointer to the event information structure
18783
18784 @see
18785 @return Result of the function call
18786*/
18787
18788WDI_Status
18789WDI_ProcessChannelSwitchRsp_V1
18790(
18791 WDI_ControlBlockType* pWDICtx,
18792 WDI_EventInfoType* pEventData
18793)
18794{
18795 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18796 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18797 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18799
18800 /*-------------------------------------------------------------------------
18801 Sanity check
18802 -------------------------------------------------------------------------*/
18803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18804 ( NULL == pEventData->pEventData))
18805 {
18806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18807 "%s: Invalid parameters", __func__);
18808 WDI_ASSERT(0);
18809 return WDI_STATUS_E_FAILURE;
18810 }
18811
18812 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18813
18814 /*-------------------------------------------------------------------------
18815 Extract response and send it to UMAC
18816 -------------------------------------------------------------------------*/
18817 wpalMemoryCopy( &halSwitchChannelRsp,
18818 (wpt_uint8*)pEventData->pEventData,
18819 sizeof(halSwitchChannelRsp));
18820
18821 wdiSwitchChRsp.wdiStatus =
18822 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18823 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18824
18825#ifdef WLAN_FEATURE_VOWIFI
18826 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18827#endif
18828
18829 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18830 if (( NULL == wdiChSwitchRspCb ) )
18831 {
18832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18833 "%s: ### Call back function is null", __func__);
18834 WDI_ASSERT(0);
18835 return WDI_STATUS_E_FAILURE;
18836 }
18837 /*Notify UMAC*/
18838 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18839
18840 return WDI_STATUS_SUCCESS;
18841}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018842
18843/**
18844 @brief Process Config STA Rsp function (called when a response
18845 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018846
18847 @param pWDICtx: pointer to the WLAN DAL context
18848 pEventData: pointer to the event information structure
18849
Jeff Johnson295189b2012-06-20 16:38:30 -070018850 @see
18851 @return Result of the function call
18852*/
18853WDI_Status
18854WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018855(
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 WDI_ControlBlockType* pWDICtx,
18857 WDI_EventInfoType* pEventData
18858)
18859{
18860 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18861 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18862 WDI_AddStaParams wdiAddSTAParam;
18863
18864 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018865 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018866
Jeff Johnsone7245742012-09-05 17:12:55 -070018867 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18869
18870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018872 -------------------------------------------------------------------------*/
18873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18874 ( NULL == pEventData->pEventData))
18875 {
18876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018880 }
18881
18882 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18883
18884 /*-------------------------------------------------------------------------
18885 Extract response and send it to UMAC
18886 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018887 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18888 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018889 sizeof(halConfigStaRsp.configStaRspParams));
18890
18891
18892 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18893 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18894 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18895 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18896 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18897
18898 /* MAC Address of STA - take from cache as it does not come back in the
18899 response*/
18900 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018901 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018902 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018903
18904 wdiCfgSTAParams.wdiStatus =
18905 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018906
18907 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18908 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18909 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18910
18911 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18912 {
18913 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18914 {
18915 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018916 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18918 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018919
Jeff Johnson295189b2012-06-20 16:38:30 -070018920 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018921 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018922 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018923 wdiAddSTAParam.ucHTCapable =
18924 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18925 wdiAddSTAParam.ucStaType =
18926 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018927 wdiAddSTAParam.ucRmfEnabled =
18928 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018929
Jeff Johnson295189b2012-06-20 16:38:30 -070018930 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018931 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18932 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018934
18935 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18936 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18937 WDI_MAC_ADDR_LEN);
18938
18939 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18940 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18941 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018942
18943 if ( NULL == pBSSSes )
18944 {
18945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18946 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018947
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018950 }
18951
18952 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018953 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018954 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018957 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018959 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018960 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018962
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18964 }
18965 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18966 {
18967 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18968
Jeff Johnsone7245742012-09-05 17:12:55 -070018969 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018971 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018972 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018973 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018974 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018975 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018977 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018978 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018979 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018980 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 halConfigStaRsp.configStaRspParams.ucUcastSig;
18983 }
18984 }
18985
18986 /*Notify UMAC*/
18987 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18988
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018990}/*WDI_ProcessConfigStaRsp*/
18991
18992
18993/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018995 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018996
18997 @param pWDICtx: pointer to the WLAN DAL context
18998 pEventData: pointer to the event information structure
18999
Jeff Johnson295189b2012-06-20 16:38:30 -070019000 @see
19001 @return Result of the function call
19002*/
19003WDI_Status
19004WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019005(
Jeff Johnson295189b2012-06-20 16:38:30 -070019006 WDI_ControlBlockType* pWDICtx,
19007 WDI_EventInfoType* pEventData
19008)
19009{
19010 WDI_Status wdiStatus;
19011 eHalStatus halStatus;
19012 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
19013
19014 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019015 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19017
19018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019020 -------------------------------------------------------------------------*/
19021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19022 ( NULL == pEventData->pEventData))
19023 {
19024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019028 }
19029
19030 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
19031
19032 wpalMutexAcquire(&pWDICtx->wptMutex);
19033
19034 /*If the link is being transitioned to idle - the BSS is to be deleted
19035 - this type of ending a session is possible when UMAC has failed an
19036 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19039 {
19040 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019041 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19044 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
19045 &pBSSSes);
19046
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 /*-----------------------------------------------------------------------
19048 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070019049 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 -----------------------------------------------------------------------*/
19051 if ( NULL == pBSSSes )
19052 {
19053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19054 "Set link response received outside association session");
19055 }
19056 else
19057 {
19058 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19059 will be del BSS coming after this to stop the beaconing & cleaning up the
19060 sessions*/
19061 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19062 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19063 {
19064 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 -----------------------------------------------------------------------*/
19067 WDI_DeleteSession(pWDICtx, pBSSSes);
19068
19069 /*-----------------------------------------------------------------------
19070 Check to see if this association is in progress - if so disable the
19071 flag as this has ended
19072 -----------------------------------------------------------------------*/
19073 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019074 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 /*Association no longer in progress */
19076 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19077 /*Association no longer in progress - prepare pending assoc for processing*/
19078 WDI_DequeueAssocRequest(pWDICtx);
19079 }
19080 }
19081 }
19082 }
19083 /* If the link state has been set to POST ASSOC, reset the "association in
19084 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019085 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19087 {
19088 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19089 WDI_DequeueAssocRequest(pWDICtx);
19090 }
19091
19092 wpalMutexRelease(&pWDICtx->wptMutex);
19093
19094 /*-------------------------------------------------------------------------
19095 Extract response and send it to UMAC
19096 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 wpalMemoryCopy( &halStatus,
19098 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019099 sizeof(halStatus));
19100
Jeff Johnsone7245742012-09-05 17:12:55 -070019101 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019102
19103 /*Notify UMAC*/
19104 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19105
Jeff Johnsone7245742012-09-05 17:12:55 -070019106 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019107}/*WDI_ProcessSetLinkStateRsp*/
19108
19109/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019112
19113 @param pWDICtx: pointer to the WLAN DAL context
19114 pEventData: pointer to the event information structure
19115
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 @see
19117 @return Result of the function call
19118*/
19119WDI_Status
19120WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019121(
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 WDI_ControlBlockType* pWDICtx,
19123 WDI_EventInfoType* pEventData
19124)
19125{
19126 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19127 WDI_GetStatsRspCb wdiGetStatsRspCb;
19128 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019129
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19131
19132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019133 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019134 -------------------------------------------------------------------------*/
19135 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19136 ( NULL == pEventData->pEventData))
19137 {
19138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019139 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019142 }
19143
19144 /*-------------------------------------------------------------------------
19145 Extract response and send it to UMAC
19146 -------------------------------------------------------------------------*/
19147 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19148
19149 /*allocate the stats response buffer */
19150 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19151 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19152 + sizeof(WDI_GetStatsRspParamsType));
19153
19154 if(NULL == wdiGetStatsRsp)
19155 {
19156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019157 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019158 pWDICtx, pEventData, pEventData->pEventData);
19159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019161 }
19162
19163 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19164
19165 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19166 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19167 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19168 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19169 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19170 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19171
19172 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19173 wpalMemoryCopy(wdiGetStatsRsp + 1,
19174 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19175 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19176
19177 /*Notify UMAC*/
19178 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19179
19180 wpalMemoryFree(wdiGetStatsRsp);
19181
Jeff Johnsone7245742012-09-05 17:12:55 -070019182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019183}/*WDI_ProcessGetStatsRsp*/
19184
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019185#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019186/**
19187 @brief Process Get Roam Rssi Rsp function (called when a response is
19188 being received over the bus from HAL)
19189
19190 @param pWDICtx: pointer to the WLAN DAL context
19191 pEventData: pointer to the event information structure
19192
19193 @see
19194 @return Result of the function call
19195*/
19196WDI_Status
19197WDI_ProcessGetRoamRssiRsp
19198(
19199 WDI_ControlBlockType* pWDICtx,
19200 WDI_EventInfoType* pEventData
19201)
19202{
19203 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19204 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19205 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19207
19208 /*-------------------------------------------------------------------------
19209 Sanity check
19210 -------------------------------------------------------------------------*/
19211 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19212 ( NULL == pEventData->pEventData))
19213 {
19214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19215 "%s: Invalid parameters", __func__);
19216 WDI_ASSERT(0);
19217 return WDI_STATUS_E_FAILURE;
19218 }
19219
19220 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19221 if(NULL == wdiGetRoamRssiRspCb)
19222 {
19223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19224 "%s: call back function is NULL", __func__);
19225 WDI_ASSERT(0);
19226 return WDI_STATUS_E_FAILURE;
19227 }
19228
19229 /*-------------------------------------------------------------------------
19230 Extract response and send it to UMAC
19231 -------------------------------------------------------------------------*/
19232 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19233 pEventData->pEventData,
19234 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19235
19236 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19237 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19238 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19239
19240 /*Notify UMAC*/
19241 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19242
19243 return WDI_STATUS_SUCCESS;
19244}/*WDI_ProcessGetRoamRssiRsp*/
19245#endif
19246
Jeff Johnson295189b2012-06-20 16:38:30 -070019247
19248/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019249 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019250 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019251
19252 @param pWDICtx: pointer to the WLAN DAL context
19253 pEventData: pointer to the event information structure
19254
Jeff Johnson295189b2012-06-20 16:38:30 -070019255 @see
19256 @return Result of the function call
19257*/
19258WDI_Status
19259WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019260(
Jeff Johnson295189b2012-06-20 16:38:30 -070019261 WDI_ControlBlockType* pWDICtx,
19262 WDI_EventInfoType* pEventData
19263)
19264{
19265 WDI_Status wdiStatus;
19266 eHalStatus halStatus;
19267 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19269
19270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019272 -------------------------------------------------------------------------*/
19273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19274 ( NULL == pEventData->pEventData))
19275 {
19276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019280 }
19281
19282 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19283
19284 /*-------------------------------------------------------------------------
19285 Extract response and send it to UMAC
19286 -------------------------------------------------------------------------*/
19287 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019288 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019289
19290 /*Notify UMAC*/
19291 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19292
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019294}/*WDI_ProcessUpdateCfgRsp*/
19295
19296
19297
19298/**
19299 @brief Process Add BA Rsp function (called when a response
19300 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019301
19302 @param pWDICtx: pointer to the WLAN DAL context
19303 pEventData: pointer to the event information structure
19304
Jeff Johnson295189b2012-06-20 16:38:30 -070019305 @see
19306 @return Result of the function call
19307*/
19308WDI_Status
19309WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019310(
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 WDI_ControlBlockType* pWDICtx,
19312 WDI_EventInfoType* pEventData
19313)
19314{
19315 WDI_AddBARspCb wdiAddBARspCb;
19316
19317 tAddBARspParams halAddBARsp;
19318 WDI_AddBARspinfoType wdiAddBARsp;
19319
19320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19321
19322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 -------------------------------------------------------------------------*/
19325 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19326 ( NULL == pEventData->pEventData))
19327 {
19328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019332 }
19333
19334 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19335
19336 /*-------------------------------------------------------------------------
19337 Extract response and send it to UMAC
19338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019339 wpalMemoryCopy( &halAddBARsp,
19340 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019341 sizeof(halAddBARsp));
19342
19343 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19344
Jeff Johnson43971f52012-07-17 12:26:56 -070019345 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019346 {
19347 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19348 }
19349
19350 /*Notify UMAC*/
19351 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19352
Jeff Johnsone7245742012-09-05 17:12:55 -070019353 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019354}/*WDI_ProcessAddSessionBARsp*/
19355
19356/**
19357 @brief Process Add BA Rsp function (called when a response
19358 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019359
19360 @param pWDICtx: pointer to the WLAN DAL context
19361 pEventData: pointer to the event information structure
19362
Jeff Johnson295189b2012-06-20 16:38:30 -070019363 @see
19364 @return Result of the function call
19365*/
19366WDI_Status
19367WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019368(
Jeff Johnson295189b2012-06-20 16:38:30 -070019369 WDI_ControlBlockType* pWDICtx,
19370 WDI_EventInfoType* pEventData
19371)
19372{
19373 WDI_TriggerBARspCb wdiTriggerBARspCb;
19374
19375 tTriggerBARspParams* halTriggerBARsp;
19376 tTriggerBaRspCandidate* halBaCandidate;
19377 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19378 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19379 wpt_uint16 index;
19380 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019381 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19383
19384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019386 -------------------------------------------------------------------------*/
19387 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19388 ( NULL == pEventData->pEventData))
19389 {
19390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019391 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019394 }
19395
19396 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19397
19398 /*-------------------------------------------------------------------------
19399 Extract response and send it to UMAC
19400 -------------------------------------------------------------------------*/
19401 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19402
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019403 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19404
19405 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19406 {
19407 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019408 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019409 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019410
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019411 if(NULL == wdiTriggerBARsp)
19412 {
19413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019414 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019415 pWDICtx, pEventData, pEventData->pEventData);
19416 WDI_ASSERT(0);
19417 return WDI_STATUS_E_FAILURE;
19418 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019419
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019420 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19421
Jeff Johnson295189b2012-06-20 16:38:30 -070019422 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19425
19426 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19427 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19428
19429 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19430 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019431 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019432 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19433 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19434 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019435 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019436 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019437 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019438 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19439 }
19440 wdiTriggerBARspCandidate++;
19441 halBaCandidate++;
19442 }
19443 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019444 else
19445 {
19446 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19447
19448 if(NULL == wdiTriggerBARsp)
19449 {
19450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019451 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019452 pWDICtx, pEventData, pEventData->pEventData);
19453 WDI_ASSERT(0);
19454 return WDI_STATUS_E_FAILURE;
19455 }
19456
19457 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19458
19459 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019460
19461 /*Notify UMAC*/
19462 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19463
19464 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019465 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019466}/*WDI_ProcessAddSessionBARsp*/
19467
19468/**
19469 @brief Process Update Beacon Params Rsp function (called when a response
19470 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019471
19472 @param pWDICtx: pointer to the WLAN DAL context
19473 pEventData: pointer to the event information structure
19474
Jeff Johnson295189b2012-06-20 16:38:30 -070019475 @see
19476 @return Result of the function call
19477*/
19478WDI_Status
19479WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019480(
Jeff Johnson295189b2012-06-20 16:38:30 -070019481 WDI_ControlBlockType* pWDICtx,
19482 WDI_EventInfoType* pEventData
19483)
19484{
19485 WDI_Status wdiStatus;
19486 eHalStatus halStatus;
19487 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19489
19490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019492 -------------------------------------------------------------------------*/
19493 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19494 ( NULL == pEventData->pEventData))
19495 {
19496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019500 }
19501
19502 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19503
19504 /*-------------------------------------------------------------------------
19505 Extract response and send it to UMAC
19506 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019507 wpalMemoryCopy( &halStatus,
19508 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019509 sizeof(halStatus));
19510
Jeff Johnsone7245742012-09-05 17:12:55 -070019511 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019512
19513 /*Notify UMAC*/
19514 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19515
Jeff Johnsone7245742012-09-05 17:12:55 -070019516 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019517}/*WDI_ProcessUpdateBeaconParamsRsp*/
19518
19519/**
19520 @brief Process Send Beacon template Rsp function (called when a response
19521 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019522
19523 @param pWDICtx: pointer to the WLAN DAL context
19524 pEventData: pointer to the event information structure
19525
Jeff Johnson295189b2012-06-20 16:38:30 -070019526 @see
19527 @return Result of the function call
19528*/
19529WDI_Status
19530WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019531(
Jeff Johnson295189b2012-06-20 16:38:30 -070019532 WDI_ControlBlockType* pWDICtx,
19533 WDI_EventInfoType* pEventData
19534)
19535{
19536 WDI_Status wdiStatus;
19537 eHalStatus halStatus;
19538 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19540
19541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 -------------------------------------------------------------------------*/
19544 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19545 ( NULL == pEventData->pEventData))
19546 {
19547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 }
19552
19553 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19554
19555 /*-------------------------------------------------------------------------
19556 Extract response and send it to UMAC
19557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019558 wpalMemoryCopy( &halStatus,
19559 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 sizeof(halStatus));
19561
Jeff Johnsone7245742012-09-05 17:12:55 -070019562 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019563
19564 /*Notify UMAC*/
19565 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19566
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019568}/*WDI_ProcessSendBeaconParamsRsp*/
19569
Jeff Johnsone7245742012-09-05 17:12:55 -070019570
Jeff Johnson295189b2012-06-20 16:38:30 -070019571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019572 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019573 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019574
19575 @param pWDICtx: pointer to the WLAN DAL context
19576 pEventData: pointer to the event information structure
19577
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 @see
19579 @return Result of the function call
19580*/
19581WDI_Status
19582WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019583(
Jeff Johnson295189b2012-06-20 16:38:30 -070019584 WDI_ControlBlockType* pWDICtx,
19585 WDI_EventInfoType* pEventData
19586)
19587{
19588 WDI_Status wdiStatus;
19589 eHalStatus halStatus;
19590 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19592
19593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019594 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019595 -------------------------------------------------------------------------*/
19596 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19597 ( NULL == pEventData->pEventData))
19598 {
19599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019603 }
19604
19605 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19606
19607 /*-------------------------------------------------------------------------
19608 Extract response and send it to UMAC
19609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019610 wpalMemoryCopy( &halStatus,
19611 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 sizeof(halStatus));
19613
Jeff Johnsone7245742012-09-05 17:12:55 -070019614 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019615
19616 /*Notify UMAC*/
19617 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19618
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019620}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19621
19622 /**
19623 @brief Process Set Max Tx Power Rsp function (called when a response
19624 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019625
19626 @param pWDICtx: pointer to the WLAN DAL context
19627 pEventData: pointer to the event information structure
19628
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 @see
19630 @return Result of the function call
19631*/
19632WDI_Status
19633WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019634(
Jeff Johnson295189b2012-06-20 16:38:30 -070019635 WDI_ControlBlockType* pWDICtx,
19636 WDI_EventInfoType* pEventData
19637)
19638{
19639 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019640
Jeff Johnson295189b2012-06-20 16:38:30 -070019641 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019642
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19645
19646 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019647 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 -------------------------------------------------------------------------*/
19649 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19650 ( NULL == pEventData->pEventData))
19651 {
19652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019653 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 }
19657
19658 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19659
19660 /*-------------------------------------------------------------------------
19661 Extract response and send it to UMAC
19662 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019663 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19664 pEventData->pEventData,
19665 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019666
19667 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19668 {
19669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19670 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 }
19673
Jeff Johnsone7245742012-09-05 17:12:55 -070019674 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019677
19678 /*Notify UMAC*/
19679 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19680
Jeff Johnsone7245742012-09-05 17:12:55 -070019681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019682}
19683
schang86c22c42013-03-13 18:41:24 -070019684 /**
19685 @brief Process Set Tx Power Rsp function (called when a response
19686 is being received over the bus from HAL)
19687
19688 @param pWDICtx: pointer to the WLAN DAL context
19689 pEventData: pointer to the event information structure
19690
19691 @see
19692 @return Result of the function call
19693*/
19694WDI_Status
19695WDI_ProcessSetTxPowerRsp
19696(
19697 WDI_ControlBlockType* pWDICtx,
19698 WDI_EventInfoType* pEventData
19699)
19700{
19701 tSetTxPwrRspMsg halTxpowerrsp;
19702 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19703 WDA_SetTxPowerRspCb wdiReqStatusCb;
19704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19705
19706 /*-------------------------------------------------------------------------
19707 Sanity check
19708 -------------------------------------------------------------------------*/
19709 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19710 ( NULL == pEventData->pEventData))
19711 {
19712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19713 "%s: Invalid parameters", __func__);
19714 WDI_ASSERT(0);
19715 return WDI_STATUS_E_FAILURE;
19716 }
19717
19718 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19719
19720 /*-------------------------------------------------------------------------
19721 Extract response and send it to UMAC
19722 -------------------------------------------------------------------------*/
19723 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19724 pEventData->pEventData,
19725 sizeof(halTxpowerrsp.setTxPwrRspParams));
19726
19727 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19728 {
19729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19730 "Error status returned in Set Tx Power Response ");
19731 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19732 return WDI_STATUS_E_FAILURE;
19733 }
19734
19735 wdiSetTxPowerRspMsg.wdiStatus =
19736 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19737
19738 /*Notify UMAC*/
19739 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19740
19741 return WDI_STATUS_SUCCESS;
19742}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019743
19744/**
19745 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19746 is being received over the bus from HAL)
19747
19748 @param pWDICtx: pointer to the WLAN DAL context
19749 pEventData: pointer to the event information structure
19750
19751 @see
19752 @return Result of the function call
19753*/
19754WDI_Status
19755WDI_ProcessSetMaxTxPowerPerBandRsp
19756(
19757 WDI_ControlBlockType* pWDICtx,
19758 WDI_EventInfoType* pEventData
19759)
19760{
19761 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19762 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19763 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19765
19766 /*-------------------------------------------------------------------------
19767 Sanity check
19768 -------------------------------------------------------------------------*/
19769 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19770 ( NULL == pEventData->pEventData))
19771 {
19772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19773 "%s: Invalid parameters", __func__);
19774 WDI_ASSERT(0);
19775 return WDI_STATUS_E_FAILURE;
19776 }
19777
19778 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19779
19780 /*-------------------------------------------------------------------------
19781 Extract response and send it to UMAC
19782 -------------------------------------------------------------------------*/
19783 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19784 pEventData->pEventData,
19785 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19786
19787 if (eHAL_STATUS_SUCCESS !=
19788 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19789 {
19790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19791 "Error status returned in Set Max Tx Power Per Band Response");
19792 return WDI_STATUS_E_FAILURE;
19793 }
19794
19795 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19796 WDI_HAL_2_WDI_STATUS(
19797 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19798
19799 /* Notify UMAC */
19800 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19801
19802 return WDI_STATUS_SUCCESS;
19803}
19804
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019805#ifdef FEATURE_WLAN_TDLS
19806/**
19807 @brief Process TDLS Link Establish Rsp function (called
19808 when a response is being received over the bus from HAL)
19809
19810 @param pWDICtx: pointer to the WLAN DAL context
19811 pEventData: pointer to the event information structure
19812
19813 @see
19814 @return Result of the function call
19815*/
19816WDI_Status
19817WDI_ProcessLinkEstablishReqRsp
19818(
19819 WDI_ControlBlockType* pWDICtx,
19820 WDI_EventInfoType* pEventData
19821)
19822{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019823 eHalStatus halStatus;
19824 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019825 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19826 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19827
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19829
19830 /*-------------------------------------------------------------------------
19831 Sanity check
19832 -------------------------------------------------------------------------*/
19833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19834 ( NULL == pEventData->pEventData))
19835 {
19836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19837 "%s: Invalid parameters", __func__);
19838 WDI_ASSERT(0);
19839 return WDI_STATUS_E_FAILURE;
19840 }
19841
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019842 /*-------------------------------------------------------------------------
19843 Extract indication and send it to UMAC
19844 -------------------------------------------------------------------------*/
19845 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19846 pEventData->pEventData,
19847 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19848
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019849 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19850
19851 /*-------------------------------------------------------------------------
19852 Extract response and send it to UMAC
19853 -------------------------------------------------------------------------*/
19854 wpalMemoryCopy( &halStatus,
19855 pEventData->pEventData,
19856 sizeof(halStatus));
19857
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019858 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19859 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019860
19861 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019862 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019863
19864 return WDI_STATUS_SUCCESS;
19865}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019866
19867
19868
19869/**
19870 @brief Process TDLS Chan switch Rsp function (called
19871 when a response is being received over the bus from HAL)
19872
19873 @param pWDICtx: pointer to the WLAN DAL context
19874 pEventData: pointer to the event information structure
19875
19876 @see
19877 @return Result of the function call
19878*/
19879WDI_Status
19880WDI_ProcessChanSwitchReqRsp
19881(
19882 WDI_ControlBlockType* pWDICtx,
19883 WDI_EventInfoType* pEventData
19884)
19885{
19886 eHalStatus halStatus;
19887 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19888 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19889 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19890
19891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19892
19893 /*-------------------------------------------------------------------------
19894 Sanity check
19895 -------------------------------------------------------------------------*/
19896 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19897 ( NULL == pEventData->pEventData))
19898 {
19899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19900 "%s: Invalid parameters", __func__);
19901 WDI_ASSERT(0);
19902 return WDI_STATUS_E_FAILURE;
19903 }
19904
19905 /*-------------------------------------------------------------------------
19906 Extract indication and send it to UMAC
19907 -------------------------------------------------------------------------*/
19908 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19909 pEventData->pEventData,
19910 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19911
19912 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19913
19914 /*-------------------------------------------------------------------------
19915 Extract response and send it to UMAC
19916 -------------------------------------------------------------------------*/
19917 wpalMemoryCopy( &halStatus,
19918 pEventData->pEventData,
19919 sizeof(halStatus));
19920
19921 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19922 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19923
19924 /*Notify UMAC*/
19925 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19926
19927 return WDI_STATUS_SUCCESS;
19928}/*WDI_ProcessChanSwitchReqRsp*/
19929
19930
19931
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019932#endif
schang86c22c42013-03-13 18:41:24 -070019933
Jeff Johnson295189b2012-06-20 16:38:30 -070019934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019935 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019937
19938 @param pWDICtx: pointer to the WLAN DAL context
19939 pEventData: pointer to the event information structure
19940
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 @see
19942 @return Result of the function call
19943*/
19944WDI_Status
19945WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019946(
Jeff Johnson295189b2012-06-20 16:38:30 -070019947 WDI_ControlBlockType* pWDICtx,
19948 WDI_EventInfoType* pEventData
19949)
19950{
19951 WDI_Status wdiStatus;
19952 eHalStatus halStatus;
19953 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19955
19956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019958 -------------------------------------------------------------------------*/
19959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19960 ( NULL == pEventData->pEventData))
19961 {
19962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019966 }
19967
19968 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19969
19970 /*-------------------------------------------------------------------------
19971 Extract response and send it to UMAC
19972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019973 wpalMemoryCopy( &halStatus,
19974 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 sizeof(halStatus));
19976
Jeff Johnsone7245742012-09-05 17:12:55 -070019977 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019978
19979 /*Notify UMAC*/
19980 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19981
Jeff Johnsone7245742012-09-05 17:12:55 -070019982 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019983}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019984/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019986 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019987
19988 @param pWDICtx: pointer to the WLAN DAL context
19989 pEventData: pointer to the event information structure
19990
Jeff Johnson295189b2012-06-20 16:38:30 -070019991 @see
19992 @return Result of the function call
19993*/
19994WDI_Status
19995WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019996(
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 WDI_ControlBlockType* pWDICtx,
19998 WDI_EventInfoType* pEventData
19999)
20000{
20001 WDI_Status wdiStatus;
20002 eHalStatus halStatus;
20003 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020004 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20006
20007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 -------------------------------------------------------------------------*/
20010 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20011 ( NULL == pEventData->pEventData))
20012 {
20013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020017 }
20018
20019 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
20020
20021 /*-------------------------------------------------------------------------
20022 Extract response and send it to UMAC
20023 -------------------------------------------------------------------------*/
20024 halStatus = *((eHalStatus*)pEventData->pEventData);
20025
Jeff Johnsone7245742012-09-05 17:12:55 -070020026 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020027
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020028 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
20029 * Other module states are taken care by PMC.
20030 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
20031 */
20032 if (wdiStatus != WDI_STATUS_SUCCESS) {
20033
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20035 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
20036 halStatus);
20037 /* Call Back is not required as we are putting the DXE in FULL
20038 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020039 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20040
20041 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
20042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020043 "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 -080020044 WDI_ASSERT(0);
20045 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020046 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020047 /*Notify UMAC*/
20048 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20049
Jeff Johnsone7245742012-09-05 17:12:55 -070020050 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020051}/*WDI_ProcessEnterImpsRsp*/
20052
20053/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020054 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020055 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020056
20057 @param pWDICtx: pointer to the WLAN DAL context
20058 pEventData: pointer to the event information structure
20059
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 @see
20061 @return Result of the function call
20062*/
20063WDI_Status
20064WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020065(
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 WDI_ControlBlockType* pWDICtx,
20067 WDI_EventInfoType* pEventData
20068)
20069{
20070 WDI_Status wdiStatus;
20071 eHalStatus halStatus;
20072 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020073 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20075
20076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020078 -------------------------------------------------------------------------*/
20079 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20080 ( NULL == pEventData->pEventData))
20081 {
20082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020083 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 }
20087
20088 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20089
20090 /*-------------------------------------------------------------------------
20091 Extract response and send it to UMAC
20092 -------------------------------------------------------------------------*/
20093 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020094 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020095
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020096 if (halStatus != eHAL_STATUS_SUCCESS)
20097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20098 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20099
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020101 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20102 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20103 {
20104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020105 "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 -080020106 WDI_ASSERT(0);
20107 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020108 /*Notify UMAC*/
20109 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20110
Jeff Johnsone7245742012-09-05 17:12:55 -070020111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020112}/*WDI_ProcessExitImpsRsp*/
20113
20114/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020115 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020116 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020117
20118 @param pWDICtx: pointer to the WLAN DAL context
20119 pEventData: pointer to the event information structure
20120
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 @see
20122 @return Result of the function call
20123*/
20124WDI_Status
20125WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020126(
Jeff Johnson295189b2012-06-20 16:38:30 -070020127 WDI_ControlBlockType* pWDICtx,
20128 WDI_EventInfoType* pEventData
20129)
20130{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020131 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20132 tHalEnterBmpsRspParams halEnterBmpsRsp;
20133 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20134 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020135 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20137
20138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020139 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020140 -------------------------------------------------------------------------*/
20141 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20142 ( NULL == pEventData->pEventData))
20143 {
20144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020145 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020148 }
20149
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020151 Extract response and send it to UMAC
20152 -------------------------------------------------------------------------*/
20153 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20154 {
20155 wpalMemoryCopy( &halEnterBmpsRsp,
20156 pEventData->pEventData,
20157 sizeof(halEnterBmpsRsp));
20158
20159 //Used to print debug message
20160 halStatus = halEnterBmpsRsp.status;
20161 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20162 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20163 }
20164 else
20165 {
20166 halStatus = *((eHalStatus*)pEventData->pEventData);
20167 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20168 }
20169
20170 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020171
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020172 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20173 * Other module states are taken care by PMC.
20174 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20175 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020176 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20177 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020178
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020180 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20181 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020182 /* Call Back is not required as we are putting the DXE in FULL
20183 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020184 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20185 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20186 {
20187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020188 "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 -080020189 WDI_ASSERT(0);
20190 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020191 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020192 }
20193
Jeff Johnson295189b2012-06-20 16:38:30 -070020194 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020195 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020196
Jeff Johnsone7245742012-09-05 17:12:55 -070020197 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020198}/*WDI_ProcessEnterBmpsRsp*/
20199
20200/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020201 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020202 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020203
20204 @param pWDICtx: pointer to the WLAN DAL context
20205 pEventData: pointer to the event information structure
20206
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 @see
20208 @return Result of the function call
20209*/
20210WDI_Status
20211WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020212(
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 WDI_ControlBlockType* pWDICtx,
20214 WDI_EventInfoType* pEventData
20215)
20216{
Jeff Johnson295189b2012-06-20 16:38:30 -070020217 eHalStatus halStatus;
20218 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020219 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020220 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20221 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20223
20224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020225 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 -------------------------------------------------------------------------*/
20227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20228 ( NULL == pEventData->pEventData))
20229 {
20230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 }
20235
20236 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20237
20238 /*-------------------------------------------------------------------------
20239 Extract response and send it to UMAC
20240 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020241
20242 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20243 {
20244 wpalMemoryCopy( &halExitBmpsRsp,
20245 pEventData->pEventData,
20246 sizeof(halExitBmpsRsp));
20247
20248 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20249 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20250 }
20251 else
20252 {
20253 halStatus = *((eHalStatus*)pEventData->pEventData);
20254 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20255 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020256
20257 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020258 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20259 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20260 {
20261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020262 "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 -080020263 WDI_ASSERT(0);
20264 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020265 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20266
20267 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020268 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020269
Jeff Johnsone7245742012-09-05 17:12:55 -070020270 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020271}/*WDI_ProcessExitBmpsRsp*/
20272
20273/**
20274 @brief Process Enter UAPSD Rsp function (called when a response
20275 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020276
20277 @param pWDICtx: pointer to the WLAN DAL context
20278 pEventData: pointer to the event information structure
20279
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 @see
20281 @return Result of the function call
20282*/
20283WDI_Status
20284WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020285(
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 WDI_ControlBlockType* pWDICtx,
20287 WDI_EventInfoType* pEventData
20288)
20289{
Jeff Johnson295189b2012-06-20 16:38:30 -070020290 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020291 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020292 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020293 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20294
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20296
20297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020299 -------------------------------------------------------------------------*/
20300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20301 ( NULL == pEventData->pEventData))
20302 {
20303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020307 }
20308
20309 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20310
20311 /*-------------------------------------------------------------------------
20312 Extract response and send it to UMAC
20313 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020314 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20315 {
20316 wpalMemoryCopy( &halEnterUapsdRsp,
20317 pEventData->pEventData,
20318 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020319
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020320 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20321 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20322 }
20323 else
20324 {
20325 halStatus = *((eHalStatus*)pEventData->pEventData);
20326 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20327 }
20328
20329 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 {
20331 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20332 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20333 // the traffic to decide when to suspend the trigger frames when there is no traffic
20334 // activity on the trigger enabled ACs
20335 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20336
20337#ifdef WLAN_PERF
20338 // Increment the BD signature to refresh the fast path BD utilization
20339 pWDICtx->uBdSigSerialNum++;
20340#endif
20341 }
20342
20343 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020344 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020345
Jeff Johnsone7245742012-09-05 17:12:55 -070020346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020347}/*WDI_ProcessEnterUapsdRsp*/
20348
20349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020350 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020351 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020352
20353 @param pWDICtx: pointer to the WLAN DAL context
20354 pEventData: pointer to the event information structure
20355
Jeff Johnson295189b2012-06-20 16:38:30 -070020356 @see
20357 @return Result of the function call
20358*/
20359WDI_Status
20360WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020361(
Jeff Johnson295189b2012-06-20 16:38:30 -070020362 WDI_ControlBlockType* pWDICtx,
20363 WDI_EventInfoType* pEventData
20364)
20365{
Jeff Johnson295189b2012-06-20 16:38:30 -070020366 eHalStatus halStatus;
20367 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020368 tHalExitUapsdRspParams halExitUapsdRsp;
20369 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20371
20372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020374 -------------------------------------------------------------------------*/
20375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20376 ( NULL == pEventData->pEventData))
20377 {
20378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 }
20383
20384 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20385
20386 /*-------------------------------------------------------------------------
20387 Extract response and send it to UMAC
20388 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020389 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20390 {
20391 wpalMemoryCopy( &halExitUapsdRsp,
20392 pEventData->pEventData,
20393 sizeof(halExitUapsdRsp));
20394
20395 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20396 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20397 }
20398 else
20399 {
20400 halStatus = *((eHalStatus*)pEventData->pEventData);
20401 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20402 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020403 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20404 // directly instead of the FW WQ.
20405 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20406
20407#ifdef WLAN_PERF
20408 // Increment the BD signature to refresh the fast path BD utilization
20409 pWDICtx->uBdSigSerialNum++;
20410#endif
20411
20412 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020413 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020414
Jeff Johnsone7245742012-09-05 17:12:55 -070020415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020416}/*WDI_ProcessExitUapsdRsp*/
20417
20418/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020419 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020420 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020421
20422 @param pWDICtx: pointer to the WLAN DAL context
20423 pEventData: pointer to the event information structure
20424
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 @see
20426 @return Result of the function call
20427*/
20428WDI_Status
20429WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020430(
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 WDI_ControlBlockType* pWDICtx,
20432 WDI_EventInfoType* pEventData
20433)
20434{
20435 WDI_Status wdiStatus;
20436 eHalStatus halStatus;
20437 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20439
20440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 -------------------------------------------------------------------------*/
20443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20444 ( NULL == pEventData->pEventData))
20445 {
20446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 }
20451
20452 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20453
20454 /*-------------------------------------------------------------------------
20455 Extract response and send it to UMAC
20456 -------------------------------------------------------------------------*/
20457 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020459
20460 /*Notify UMAC*/
20461 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20462
Jeff Johnsone7245742012-09-05 17:12:55 -070020463 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020464}/*WDI_ProcessSetUapsdAcParamsRsp*/
20465
20466/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020467 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020468 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020469
20470 @param pWDICtx: pointer to the WLAN DAL context
20471 pEventData: pointer to the event information structure
20472
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 @see
20474 @return Result of the function call
20475*/
20476WDI_Status
20477WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020478(
Jeff Johnson295189b2012-06-20 16:38:30 -070020479 WDI_ControlBlockType* pWDICtx,
20480 WDI_EventInfoType* pEventData
20481)
20482{
20483 WDI_Status wdiStatus;
20484 eHalStatus halStatus;
20485 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20487
20488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020489 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020490 -------------------------------------------------------------------------*/
20491 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20492 ( NULL == pEventData->pEventData))
20493 {
20494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020495 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020497 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 }
20499
20500 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20501
20502 /*-------------------------------------------------------------------------
20503 Extract response and send it to UMAC
20504 -------------------------------------------------------------------------*/
20505 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020506 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020507
20508 /*Notify UMAC*/
20509 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20510
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020512}/*WDI_ProcessUpdateUapsdParamsRsp*/
20513
20514/**
20515 @brief Process Configure RXP filter Rsp function (called when a
20516 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020517
20518 @param pWDICtx: pointer to the WLAN DAL context
20519 pEventData: pointer to the event information structure
20520
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 @see
20522 @return Result of the function call
20523*/
20524WDI_Status
20525WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020526(
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 WDI_ControlBlockType* pWDICtx,
20528 WDI_EventInfoType* pEventData
20529)
20530{
20531 WDI_Status wdiStatus;
20532 eHalStatus halStatus;
20533 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20535
20536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 -------------------------------------------------------------------------*/
20539 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20540 ( NULL == pEventData->pEventData))
20541 {
20542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 }
20547
20548 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20549
20550 /*-------------------------------------------------------------------------
20551 Extract response and send it to UMAC
20552 -------------------------------------------------------------------------*/
20553 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020554 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020555
20556 /*Notify UMAC*/
20557 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20558
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020560}/*WDI_ProcessConfigureRxpFilterRsp*/
20561
20562/**
20563 @brief Process Set beacon filter Rsp function (called when a
20564 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020565
20566 @param pWDICtx: pointer to the WLAN DAL context
20567 pEventData: pointer to the event information structure
20568
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 @see
20570 @return Result of the function call
20571*/
20572WDI_Status
20573WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020574(
Jeff Johnson295189b2012-06-20 16:38:30 -070020575 WDI_ControlBlockType* pWDICtx,
20576 WDI_EventInfoType* pEventData
20577)
20578{
20579 WDI_Status wdiStatus;
20580 eHalStatus halStatus;
20581 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20583
20584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 -------------------------------------------------------------------------*/
20587 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20588 ( NULL == pEventData->pEventData))
20589 {
20590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020594 }
20595
20596 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20597
20598 /*-------------------------------------------------------------------------
20599 Extract response and send it to UMAC
20600 -------------------------------------------------------------------------*/
20601 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020602 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020603
20604 /*Notify UMAC*/
20605 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20606
Jeff Johnsone7245742012-09-05 17:12:55 -070020607 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020608}/*WDI_ProcessSetBeaconFilterRsp*/
20609
20610/**
20611 @brief Process remove beacon filter Rsp function (called when a
20612 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020613
20614 @param pWDICtx: pointer to the WLAN DAL context
20615 pEventData: pointer to the event information structure
20616
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 @see
20618 @return Result of the function call
20619*/
20620WDI_Status
20621WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020622(
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 WDI_ControlBlockType* pWDICtx,
20624 WDI_EventInfoType* pEventData
20625)
20626{
20627 WDI_Status wdiStatus;
20628 eHalStatus halStatus;
20629 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20631
20632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020634 -------------------------------------------------------------------------*/
20635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20636 ( NULL == pEventData->pEventData))
20637 {
20638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 }
20643
20644 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20645
20646 /*-------------------------------------------------------------------------
20647 Extract response and send it to UMAC
20648 -------------------------------------------------------------------------*/
20649 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020651
20652 /*Notify UMAC*/
20653 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20654
Jeff Johnsone7245742012-09-05 17:12:55 -070020655 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020656}/*WDI_ProcessRemBeaconFilterRsp*/
20657
20658/**
20659 @brief Process set RSSI thresholds Rsp function (called when a
20660 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020661
20662 @param pWDICtx: pointer to the WLAN DAL context
20663 pEventData: pointer to the event information structure
20664
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 @see
20666 @return Result of the function call
20667*/
20668WDI_Status
20669WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020670(
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 WDI_ControlBlockType* pWDICtx,
20672 WDI_EventInfoType* pEventData
20673)
20674{
20675 WDI_Status wdiStatus;
20676 eHalStatus halStatus;
20677 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20679
20680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 -------------------------------------------------------------------------*/
20683 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20684 ( NULL == pEventData->pEventData))
20685 {
20686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 }
20691
20692 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20693
20694 /*-------------------------------------------------------------------------
20695 Extract response and send it to UMAC
20696 -------------------------------------------------------------------------*/
20697 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020699
20700 /*Notify UMAC*/
20701 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20702
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020704}/*WDI_ProcessSetRSSIThresoldsRsp*/
20705
20706/**
20707 @brief Process host offload Rsp function (called when a
20708 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020709
20710 @param pWDICtx: pointer to the WLAN DAL context
20711 pEventData: pointer to the event information structure
20712
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 @see
20714 @return Result of the function call
20715*/
20716WDI_Status
20717WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020718(
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 WDI_ControlBlockType* pWDICtx,
20720 WDI_EventInfoType* pEventData
20721)
20722{
20723 WDI_Status wdiStatus;
20724 eHalStatus halStatus;
20725 WDI_HostOffloadCb wdiHostOffloadCb;
20726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20727
20728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 -------------------------------------------------------------------------*/
20731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20732 ( NULL == pEventData->pEventData))
20733 {
20734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 }
20739
20740 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20741
20742 /*-------------------------------------------------------------------------
20743 Extract response and send it to UMAC
20744 -------------------------------------------------------------------------*/
20745 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020746 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020747
20748 /*Notify UMAC*/
20749 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20750
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020752}/*WDI_ProcessHostOffloadRsp*/
20753
20754/**
20755 @brief Process keep alive Rsp function (called when a
20756 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020757
20758 @param pWDICtx: pointer to the WLAN DAL context
20759 pEventData: pointer to the event information structure
20760
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 @see
20762 @return Result of the function call
20763*/
20764WDI_Status
20765WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020766(
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 WDI_ControlBlockType* pWDICtx,
20768 WDI_EventInfoType* pEventData
20769)
20770{
20771 WDI_Status wdiStatus;
20772 eHalStatus halStatus;
20773 WDI_KeepAliveCb wdiKeepAliveCb;
20774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053020775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20777
20778
20779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 -------------------------------------------------------------------------*/
20782 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20783 ( NULL == pEventData->pEventData))
20784 {
20785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020789 }
20790
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20792
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 /*-------------------------------------------------------------------------
20794 Extract response and send it to UMAC
20795 -------------------------------------------------------------------------*/
20796 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020797 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020798
20799 /*Notify UMAC*/
20800 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20801
Jeff Johnsone7245742012-09-05 17:12:55 -070020802 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020803}/*WDI_ProcessKeepAliveRsp*/
20804
20805/**
20806 @brief Process wowl add ptrn Rsp function (called when a
20807 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020808
20809 @param pWDICtx: pointer to the WLAN DAL context
20810 pEventData: pointer to the event information structure
20811
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 @see
20813 @return Result of the function call
20814*/
20815WDI_Status
20816WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020817(
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 WDI_ControlBlockType* pWDICtx,
20819 WDI_EventInfoType* pEventData
20820)
20821{
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 eHalStatus halStatus;
20823 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020824 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20825 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20826
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20828
20829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 -------------------------------------------------------------------------*/
20832 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20833 ( NULL == pEventData->pEventData))
20834 {
20835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020839 }
20840
20841 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20842
20843 /*-------------------------------------------------------------------------
20844 Extract response and send it to UMAC
20845 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020846 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20847 {
20848 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20849 pEventData->pEventData,
20850 sizeof(halAddWowlBcastPtrRsp));
20851
20852 wdiWowlAddBcPtrRsp.wdiStatus =
20853 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20854 }
20855 else
20856 {
20857 halStatus = *((eHalStatus*)pEventData->pEventData);
20858 wdiWowlAddBcPtrRsp.wdiStatus =
20859 WDI_HAL_2_WDI_STATUS(halStatus);
20860 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020861
20862 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020863 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020864
Jeff Johnsone7245742012-09-05 17:12:55 -070020865 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020866}/*WDI_ProcessWowlAddBcPtrnRsp*/
20867
20868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020869 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020870 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020871
20872 @param pWDICtx: pointer to the WLAN DAL context
20873 pEventData: pointer to the event information structure
20874
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 @see
20876 @return Result of the function call
20877*/
20878WDI_Status
20879WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020880(
Jeff Johnson295189b2012-06-20 16:38:30 -070020881 WDI_ControlBlockType* pWDICtx,
20882 WDI_EventInfoType* pEventData
20883)
20884{
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 eHalStatus halStatus;
20886 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020887 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20888 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20890
20891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020893 -------------------------------------------------------------------------*/
20894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20895 ( NULL == pEventData->pEventData))
20896 {
20897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 }
20902
20903 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20904
20905 /*-------------------------------------------------------------------------
20906 Extract response and send it to UMAC
20907 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020908 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20909 {
20910 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20911 pEventData->pEventData,
20912 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020913
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020914 wdiWowlDelBcstPtrRsp.wdiStatus =
20915 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20916 }
20917 else
20918 {
20919 halStatus = *((eHalStatus*)pEventData->pEventData);
20920 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20921 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020923 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020924
Jeff Johnsone7245742012-09-05 17:12:55 -070020925 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020926}/*WDI_ProcessWowlDelBcPtrnRsp*/
20927
20928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020931
20932 @param pWDICtx: pointer to the WLAN DAL context
20933 pEventData: pointer to the event information structure
20934
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 @see
20936 @return Result of the function call
20937*/
20938WDI_Status
20939WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020940(
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 WDI_ControlBlockType* pWDICtx,
20942 WDI_EventInfoType* pEventData
20943)
20944{
Jeff Johnson295189b2012-06-20 16:38:30 -070020945 eHalStatus halStatus;
20946 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020947 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20948 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20950
20951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020953 -------------------------------------------------------------------------*/
20954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20955 ( NULL == pEventData->pEventData))
20956 {
20957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 }
20962
20963 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20964
20965 /*-------------------------------------------------------------------------
20966 Extract response and send it to UMAC
20967 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020968 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20969 {
20970 wpalMemoryCopy( &halEnterWowlRspParams,
20971 (wpt_uint8*)pEventData->pEventData,
20972 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020973
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020974 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20975 wdiwowlEnterRsp.status =
20976 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20977 }
20978 else
20979 {
20980 halStatus = *((eHalStatus*)pEventData->pEventData);
20981 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20982 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020984 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020985
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020987}/*WDI_ProcessWowlEnterRsp*/
20988
20989/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020990 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020992
20993 @param pWDICtx: pointer to the WLAN DAL context
20994 pEventData: pointer to the event information structure
20995
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 @see
20997 @return Result of the function call
20998*/
20999WDI_Status
21000WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021001(
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 WDI_ControlBlockType* pWDICtx,
21003 WDI_EventInfoType* pEventData
21004)
21005{
Jeff Johnson295189b2012-06-20 16:38:30 -070021006 eHalStatus halStatus;
21007 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021008 tHalExitWowlRspParams halExitWowlRspParams;
21009 WDI_WowlExitRspParamsType wdiWowlExitRsp;
21010
Jeff Johnson295189b2012-06-20 16:38:30 -070021011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21012
21013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 -------------------------------------------------------------------------*/
21016 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21017 ( NULL == pEventData->pEventData))
21018 {
21019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021023 }
21024
21025 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
21026
21027 /*-------------------------------------------------------------------------
21028 Extract response and send it to UMAC
21029 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021030 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21031 {
21032 wpalMemoryCopy( &halExitWowlRspParams,
21033 pEventData->pEventData,
21034 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021035
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021036 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
21037 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
21038
21039 }
21040 else
21041 {
21042 halStatus = *((eHalStatus*)pEventData->pEventData);
21043 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21044 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021046 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021047
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021049}/*WDI_ProcessWowlExitRsp*/
21050
21051/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 (called when a response is being received over the bus
21054 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021055
21056 @param pWDICtx: pointer to the WLAN DAL context
21057 pEventData: pointer to the event information structure
21058
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 @see
21060 @return Result of the function call
21061*/
21062WDI_Status
21063WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021064(
Jeff Johnson295189b2012-06-20 16:38:30 -070021065 WDI_ControlBlockType* pWDICtx,
21066 WDI_EventInfoType* pEventData
21067)
21068{
21069 WDI_Status wdiStatus;
21070 eHalStatus halStatus;
21071 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21073
21074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 -------------------------------------------------------------------------*/
21077 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21078 ( NULL == pEventData->pEventData))
21079 {
21080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021084 }
21085
21086 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21087
21088 /*-------------------------------------------------------------------------
21089 Extract response and send it to UMAC
21090 -------------------------------------------------------------------------*/
21091 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021092 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021093
21094 /*Notify UMAC*/
21095 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21096
Jeff Johnsone7245742012-09-05 17:12:55 -070021097 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021098}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21099
21100
21101/**
21102 @brief Process Nv download(called when a response
21103 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021104
21105 @param pWDICtx: pointer to the WLAN DAL context
21106 pEventData: pointer to the event information structure
21107
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 @see
21109 @return Result of the function call
21110*/
21111WDI_Status
21112WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021113(
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 WDI_ControlBlockType* pWDICtx,
21115 WDI_EventInfoType* pEventData
21116)
21117{
21118
21119 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21120 tHalNvImgDownloadRspParams halNvDownloadRsp;
21121 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21122
21123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021124 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 -------------------------------------------------------------------------*/
21126 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21127 ( NULL == pEventData->pEventData))
21128 {
21129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021133 }
21134
21135 /*-------------------------------------------------------------------------
21136 Extract response and send it to UMAC
21137 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 wpalMemoryCopy( &halNvDownloadRsp,
21139 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021140 sizeof(halNvDownloadRsp));
21141
21142 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21143
21144 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021145 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21146 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021147 {
21148 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021149 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021150 }
21151 else
21152 {
21153 /*Reset the Nv related global information in WDI context information */
21154 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21155 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21156 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21157 /*call WDA callback function for last fragment */
21158 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21159 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21160 }
21161
Jeff Johnsone7245742012-09-05 17:12:55 -070021162 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021163}
21164#ifdef WLAN_FEATURE_VOWIFI_11R
21165/**
21166 @brief Process Add TSpec Rsp function (called when a response
21167 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021168
21169 @param pWDICtx: pointer to the WLAN DAL context
21170 pEventData: pointer to the event information structure
21171
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 @see
21173 @return Result of the function call
21174*/
21175WDI_Status
21176WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021177(
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 WDI_ControlBlockType* pWDICtx,
21179 WDI_EventInfoType* pEventData
21180)
21181{
21182 WDI_Status wdiStatus;
21183 tAggrAddTsRspParams aggrAddTsRsp;
21184 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21186
21187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 -------------------------------------------------------------------------*/
21190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21191 ( NULL == pEventData->pEventData))
21192 {
21193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 }
21198
21199 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21200
21201 /*-------------------------------------------------------------------------
21202 Extract response and send it to UMAC
21203 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 wpalMemoryCopy( &aggrAddTsRsp,
21205 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 sizeof(aggrAddTsRsp));
21207
21208 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021209 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021210
21211 /*Notify UMAC*/
21212 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21213
Jeff Johnsone7245742012-09-05 17:12:55 -070021214 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021215}/*WDI_ProcessAddTSpecRsp*/
21216#endif /* WLAN_FEATURE_VOWIFI_11R */
21217
21218/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021219 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021220 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021221
21222 @param pWDICtx: pointer to the WLAN DAL context
21223 pEventData: pointer to the event information structure
21224
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 @see
21226 @return Result of the function call
21227*/
21228WDI_Status
21229WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021230(
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 WDI_ControlBlockType* pWDICtx,
21232 WDI_EventInfoType* pEventData
21233)
21234{
21235 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21236 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21237 tHalHostResumeRspParams hostResumeRspMsg;
21238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21239
21240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021241 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 -------------------------------------------------------------------------*/
21243 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21244 ( NULL == pEventData->pEventData))
21245 {
21246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 }
21251
21252 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21253
21254 /*-------------------------------------------------------------------------
21255 Extract response and send it to UMAC
21256 -------------------------------------------------------------------------*/
21257
Jeff Johnsone7245742012-09-05 17:12:55 -070021258 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021259 (wpt_uint8*)pEventData->pEventData,
21260 sizeof(hostResumeRspMsg));
21261
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 wdiResumeRspParams.wdiStatus =
21263 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021264
21265 /*Notify UMAC*/
21266 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21267
21268 return WDI_STATUS_SUCCESS;
21269}
21270
21271/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021272 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021273 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021274
21275 @param pWDICtx: pointer to the WLAN DAL context
21276 pEventData: pointer to the event information structure
21277
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 @see
21279 @return Result of the function call
21280*/
21281WDI_Status
21282WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021283(
Jeff Johnson295189b2012-06-20 16:38:30 -070021284 WDI_ControlBlockType* pWDICtx,
21285 WDI_EventInfoType* pEventData
21286)
21287{
21288 WDI_Status wdiStatus;
21289 eHalStatus halStatus;
21290 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21292
21293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021295 -------------------------------------------------------------------------*/
21296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21297 ( NULL == pEventData->pEventData))
21298 {
21299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021303 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021304
21305 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021306
21307 /*-------------------------------------------------------------------------
21308 Extract response and send it to UMAC
21309 -------------------------------------------------------------------------*/
21310 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021312
21313 /*Notify UMAC*/
21314 pwdiSetTxPerTrackingRspCb( 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_ProcessSetTxPerTrackingRsp*/
21318
21319/*==========================================================================
21320 Indications from HAL
21321 ==========================================================================*/
21322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021323 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 indication of this kind is being received over the bus
21325 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021326
21327 @param pWDICtx: pointer to the WLAN DAL context
21328 pEventData: pointer to the event information structure
21329
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 @see
21331 @return Result of the function call
21332*/
21333WDI_Status
21334WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021335(
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 WDI_ControlBlockType* pWDICtx,
21337 WDI_EventInfoType* pEventData
21338)
21339{
21340 WDI_LowLevelIndType wdiInd;
21341 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21343
21344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 -------------------------------------------------------------------------*/
21347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21348 ( NULL == pEventData->pEventData))
21349 {
21350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021351 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021354 }
21355
21356 /*-------------------------------------------------------------------------
21357 Extract indication and send it to UMAC
21358 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021359 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21360 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021361 sizeof(tHalRSSINotification));
21362
21363 /*Fill in the indication parameters*/
21364 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21365 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21366 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21367 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21368 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21369 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21370 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21371 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21372 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21373 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21374 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21375 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21376 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021377 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21378 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021379
ltimariub77f24b2013-01-24 18:54:33 -080021380 if ( pWDICtx->wdiLowLevelIndCB )
21381 {
21382 /*Notify UMAC of indication*/
21383 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21384 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021385
21386 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021387}/*WDI_ProcessLowRSSIInd*/
21388
21389
21390/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021391 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 an indication of this kind is being received over the
21393 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021394
21395 @param pWDICtx: pointer to the WLAN DAL context
21396 pEventData: pointer to the event information structure
21397
Jeff Johnson295189b2012-06-20 16:38:30 -070021398 @see
21399 @return Result of the function call
21400*/
21401WDI_Status
21402WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021403(
Jeff Johnson295189b2012-06-20 16:38:30 -070021404 WDI_ControlBlockType* pWDICtx,
21405 WDI_EventInfoType* pEventData
21406)
21407{
21408 WDI_Status wdiStatus;
21409 eHalStatus halStatus;
21410 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021411 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21413
21414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021415 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021416 -------------------------------------------------------------------------*/
21417 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21418 ( NULL == pEventData->pEventData))
21419 {
21420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021425 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 /*-------------------------------------------------------------------------
21427 Extract indication and send it to UMAC
21428 -------------------------------------------------------------------------*/
21429 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21430 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021431 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021432
21433 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021434 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021435 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21436 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021437 if ( pWDICtx->wdiLowLevelIndCB )
21438 {
21439 /*Notify UMAC*/
21440 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21441 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021442
21443 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021444}/*WDI_ProcessMissedBeaconInd*/
21445
21446
21447/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021448 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021449 an indication of this kind is being received over the
21450 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021451
21452 @param pWDICtx: pointer to the WLAN DAL context
21453 pEventData: pointer to the event information structure
21454
Jeff Johnson295189b2012-06-20 16:38:30 -070021455 @see
21456 @return Result of the function call
21457*/
21458WDI_Status
21459WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021460(
Jeff Johnson295189b2012-06-20 16:38:30 -070021461 WDI_ControlBlockType* pWDICtx,
21462 WDI_EventInfoType* pEventData
21463)
21464{
21465 WDI_Status wdiStatus;
21466 eHalStatus halStatus;
21467 WDI_LowLevelIndType wdiInd;
21468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21469
21470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 -------------------------------------------------------------------------*/
21473 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21474 ( NULL == pEventData->pEventData))
21475 {
21476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021480 }
21481
21482 /*-------------------------------------------------------------------------
21483 Extract indication and send it to UMAC
21484 -------------------------------------------------------------------------*/
21485 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21486 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021488
21489 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021491 /* ! TO DO - fill in from HAL struct:
21492 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21493
ltimariub77f24b2013-01-24 18:54:33 -080021494 if ( pWDICtx->wdiLowLevelIndCB )
21495 {
21496 /*Notify UMAC*/
21497 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21498 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021499
21500 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021501}/*WDI_ProcessUnkAddrFrameInd*/
21502
21503
21504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021505 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021506 indication of this kind is being received over the bus
21507 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021508
21509 @param pWDICtx: pointer to the WLAN DAL context
21510 pEventData: pointer to the event information structure
21511
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 @see
21513 @return Result of the function call
21514*/
21515WDI_Status
21516WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021517(
Jeff Johnson295189b2012-06-20 16:38:30 -070021518 WDI_ControlBlockType* pWDICtx,
21519 WDI_EventInfoType* pEventData
21520)
21521{
21522 WDI_LowLevelIndType wdiInd;
21523 tpSirMicFailureInd pHalMicFailureInd;
21524
21525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21526
21527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 -------------------------------------------------------------------------*/
21530 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21531 ( NULL == pEventData->pEventData))
21532 {
21533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021538
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21540 /*-------------------------------------------------------------------------
21541 Extract indication and send it to UMAC
21542 -------------------------------------------------------------------------*/
21543
21544 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21547 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21548 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21549 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21550 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21551 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21552 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21553 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021556 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021557 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021558 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021559 pHalMicFailureInd->info.keyId;
21560 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21561 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21562 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21563 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021564
21565 if ( pWDICtx->wdiLowLevelIndCB )
21566 {
21567 /*Notify UMAC*/
21568 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21569 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021570
21571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021572}/*WDI_ProcessMicFailureInd*/
21573
21574
21575/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021576 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 an indication of this kind is being received over the
21578 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021579
21580 @param pWDICtx: pointer to the WLAN DAL context
21581 pEventData: pointer to the event information structure
21582
Jeff Johnson295189b2012-06-20 16:38:30 -070021583 @see
21584 @return Result of the function call
21585*/
21586WDI_Status
21587WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021588(
Jeff Johnson295189b2012-06-20 16:38:30 -070021589 WDI_ControlBlockType* pWDICtx,
21590 WDI_EventInfoType* pEventData
21591)
21592{
21593 WDI_Status wdiStatus;
21594 eHalStatus halStatus;
21595 WDI_LowLevelIndType wdiInd;
21596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21597
21598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 -------------------------------------------------------------------------*/
21601 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21602 ( NULL == pEventData->pEventData))
21603 {
21604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021605 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 }
21609
21610 /*-------------------------------------------------------------------------
21611 Extract indication and send it to UMAC
21612 -------------------------------------------------------------------------*/
21613
21614 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21615 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021616 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021617
21618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21619 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021620
Jeff Johnson295189b2012-06-20 16:38:30 -070021621 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021622 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21623 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021624
ltimariub77f24b2013-01-24 18:54:33 -080021625 if ( pWDICtx->wdiLowLevelIndCB )
21626 {
21627 /*Notify UMAC*/
21628 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21629 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021630
21631 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021632}/*WDI_ProcessFatalErrorInd*/
21633
21634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 an indication of this kind is being received over the
21637 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021638
21639 @param pWDICtx: pointer to the WLAN DAL context
21640 pEventData: pointer to the event information structure
21641
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 @see
21643 @return Result of the function call
21644*/
21645WDI_Status
21646WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021647(
Jeff Johnson295189b2012-06-20 16:38:30 -070021648 WDI_ControlBlockType* pWDICtx,
21649 WDI_EventInfoType* pEventData
21650)
21651{
21652 tDeleteStaContextParams halDelSTACtx;
21653 WDI_LowLevelIndType wdiInd;
21654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21655
21656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021658 -------------------------------------------------------------------------*/
21659 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21660 ( NULL == pEventData->pEventData))
21661 {
21662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 }
21667
21668 /*-------------------------------------------------------------------------
21669 Extract indication and send it to UMAC
21670 -------------------------------------------------------------------------*/
21671
21672 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021673 wpalMemoryCopy( &halDelSTACtx,
21674 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 sizeof(halDelSTACtx));
21676
21677 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021679
21680 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21681 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21682 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21683 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21684
Jeff Johnsone7245742012-09-05 17:12:55 -070021685 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021686 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021687 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021689 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21690 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021691
ltimariub77f24b2013-01-24 18:54:33 -080021692 if ( pWDICtx->wdiLowLevelIndCB )
21693 {
21694 /*Notify UMAC*/
21695 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21696 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021697
21698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021699}/*WDI_ProcessDelSTAInd*/
21700
21701/**
21702*@brief Process Coex Indication function (called when
21703 an indication of this kind is being received over the
21704 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021705
21706 @param pWDICtx: pointer to the WLAN DAL context
21707 pEventData: pointer to the event information structure
21708
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 @see
21710 @return Result of the function call
21711*/
21712WDI_Status
21713WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021714(
Jeff Johnson295189b2012-06-20 16:38:30 -070021715 WDI_ControlBlockType* pWDICtx,
21716 WDI_EventInfoType* pEventData
21717)
21718{
21719 WDI_LowLevelIndType wdiInd;
21720 tCoexIndMsg halCoexIndMsg;
21721 wpt_uint32 index;
21722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21723
21724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021726 -------------------------------------------------------------------------*/
21727 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21728 ( NULL == pEventData->pEventData ))
21729 {
21730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021732 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021734 }
21735
21736 /*-------------------------------------------------------------------------
21737 Extract indication and send it to UMAC
21738 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021739 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21740 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 sizeof(halCoexIndMsg.coexIndParams) );
21742
21743 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 wdiInd.wdiIndicationType = WDI_COEX_IND;
21745 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021746 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21747 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021748 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021749 }
21750
21751 // DEBUG
21752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21753 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21755 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21756 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21757 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21758 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021759
ltimariub77f24b2013-01-24 18:54:33 -080021760 if ( pWDICtx->wdiLowLevelIndCB )
21761 {
21762 /*Notify UMAC*/
21763 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21764 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021765
21766 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021767}/*WDI_ProcessCoexInd*/
21768
21769/**
21770*@brief Process Tx Complete Indication function (called when
21771 an indication of this kind is being received over the
21772 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021773
21774 @param pWDICtx: pointer to the WLAN DAL context
21775 pEventData: pointer to the event information structure
21776
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 @see
21778 @return Result of the function call
21779*/
21780WDI_Status
21781WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021782(
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 WDI_ControlBlockType* pWDICtx,
21784 WDI_EventInfoType* pEventData
21785)
21786{
21787 WDI_LowLevelIndType wdiInd;
21788 tTxComplIndMsg halTxComplIndMsg;
21789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21790
21791 /*-------------------------------------------------------------------------
21792 Sanity check
21793 -------------------------------------------------------------------------*/
21794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21795 ( NULL == pEventData->pEventData ))
21796 {
21797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 WDI_ASSERT( 0 );
21800 return WDI_STATUS_E_FAILURE;
21801 }
21802
21803 /*-------------------------------------------------------------------------
21804 Extract indication and send it to UMAC
21805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021806 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21807 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021808 sizeof(halTxComplIndMsg.txComplParams) );
21809
21810 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021812
21813 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21814 &halTxComplIndMsg.txComplParams,
21815 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021816
ltimariub77f24b2013-01-24 18:54:33 -080021817 if ( pWDICtx->wdiLowLevelIndCB )
21818 {
21819 /*Notify UMAC*/
21820 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21821 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021822
21823 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021824}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021825#ifdef FEATURE_WLAN_TDLS
21826/**
21827*@brief Process TDLS Indication function (called when
21828 an indication of this kind is being received over the
21829 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021830
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021831 @param pWDICtx: pointer to the WLAN DAL context
21832 pEventData: pointer to the event information structure
21833
21834 @see
21835 @return Result of the function call
21836*/
21837WDI_Status
21838WDI_ProcessTdlsInd
21839(
21840 WDI_ControlBlockType* pWDICtx,
21841 WDI_EventInfoType* pEventData
21842)
21843{
21844 WDI_LowLevelIndType wdiInd;
21845 tTdlsIndMsg halTdlsIndMsg;
21846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21847
21848 /*-------------------------------------------------------------------------
21849 Sanity check
21850 -------------------------------------------------------------------------*/
21851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21852 ( NULL == pEventData->pEventData ))
21853 {
21854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21855 "%s: Invalid parameters", __func__);
21856 WDI_ASSERT( 0 );
21857 return WDI_STATUS_E_FAILURE;
21858 }
21859
21860 /*-------------------------------------------------------------------------
21861 Extract indication and send it to UMAC
21862 -------------------------------------------------------------------------*/
21863 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21864 pEventData->pEventData,
21865 sizeof(halTdlsIndMsg.tdlsIndParams) );
21866
21867 /*Fill in the indication parameters*/
21868 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21869
21870 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21871 = halTdlsIndMsg.tdlsIndParams.status;
21872
21873 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21874 = halTdlsIndMsg.tdlsIndParams.staIdx;
21875
21876 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21877 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21878
Atul Mittalbb2aad02014-09-22 19:09:36 +053021879 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21880 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021881 /*Notify UMAC*/
21882 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21883
21884 return WDI_STATUS_SUCCESS;
21885}/*WDI_ProcessTdlsInd*/
21886#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021887/**
Viral Modid86bde22012-12-10 13:09:21 -080021888*@brief Process Noa Start Indication function (called when
21889 an indication of this kind is being received over the
21890 bus from HAL)
21891
21892 @param pWDICtx: pointer to the WLAN DAL context
21893 pEventData: pointer to the event information structure
21894
21895 @see
21896 @return Result of the function call
21897*/
21898WDI_Status
21899WDI_ProcessP2pNoaStartInd
21900(
21901 WDI_ControlBlockType* pWDICtx,
21902 WDI_EventInfoType* pEventData
21903)
21904{
21905 WDI_LowLevelIndType wdiInd;
21906 tNoaStartIndMsg halNoaStartIndMsg;
21907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21908
21909 /*-------------------------------------------------------------------------
21910 Sanity check
21911 -------------------------------------------------------------------------*/
21912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21913 ( NULL == pEventData->pEventData ))
21914 {
21915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21916 "%s: Invalid parameters", __func__);
21917 WDI_ASSERT( 0 );
21918 return WDI_STATUS_E_FAILURE;
21919 }
21920
21921 /*-------------------------------------------------------------------------
21922 Extract indication and send it to UMAC
21923 -------------------------------------------------------------------------*/
21924 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21925 pEventData->pEventData,
21926 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21927
21928 /*Fill in the indication parameters*/
21929 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21930
21931 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21932 = halNoaStartIndMsg.noaStartIndParams.status;
21933
21934 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21935 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21936
21937 /*Notify UMAC*/
21938 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21939
21940 return WDI_STATUS_SUCCESS;
21941}/*WDI_ProcessNoaAttrInd*/
21942
21943/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021944*@brief Process Noa Attr Indication function (called when
21945 an indication of this kind is being received over the
21946 bus from HAL)
21947
21948 @param pWDICtx: pointer to the WLAN DAL context
21949 pEventData: pointer to the event information structure
21950
21951 @see
21952 @return Result of the function call
21953*/
21954WDI_Status
21955WDI_ProcessP2pNoaAttrInd
21956(
21957 WDI_ControlBlockType* pWDICtx,
21958 WDI_EventInfoType* pEventData
21959)
21960{
21961 WDI_LowLevelIndType wdiInd;
21962 tNoaAttrIndMsg halNoaAttrIndMsg;
21963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21964
21965 /*-------------------------------------------------------------------------
21966 Sanity check
21967 -------------------------------------------------------------------------*/
21968 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21969 ( NULL == pEventData->pEventData ))
21970 {
21971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 WDI_ASSERT( 0 );
21974 return WDI_STATUS_E_FAILURE;
21975 }
21976
21977 /*-------------------------------------------------------------------------
21978 Extract indication and send it to UMAC
21979 -------------------------------------------------------------------------*/
21980 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21981 pEventData->pEventData,
21982 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21983
21984 /*Fill in the indication parameters*/
21985 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021986
Jeff Johnson295189b2012-06-20 16:38:30 -070021987 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21988 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021989
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21991 = halNoaAttrIndMsg.noaAttrIndParams.index;
21992 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21993 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21994 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21995 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021996
Jeff Johnson295189b2012-06-20 16:38:30 -070021997 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21998 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21999 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
22000 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
22001 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
22002 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
22003 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
22004 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070022005
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
22007 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
22008 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
22009 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
22010 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
22011 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
22012 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
22013 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
22014
ltimariub77f24b2013-01-24 18:54:33 -080022015 if ( pWDICtx->wdiLowLevelIndCB )
22016 {
22017 /*Notify UMAC*/
22018 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22019 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022020
22021 return WDI_STATUS_SUCCESS;
22022}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022023
22024/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022025 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 an indication of this kind is being received over the
22027 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022028
22029 @param pWDICtx: pointer to the WLAN DAL context
22030 pEventData: pointer to the event information structure
22031
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 @see
22033 @return Result of the function call
22034*/
22035WDI_Status
22036WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022037(
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 WDI_ControlBlockType* pWDICtx,
22039 WDI_EventInfoType* pEventData
22040)
22041{
22042 WDI_LowLevelIndType wdiInd;
22043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022044
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 /*-------------------------------------------------------------------------
22046 Extract indication and send it to UMAC
22047 -------------------------------------------------------------------------*/
22048 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022049 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
22050
ltimariub77f24b2013-01-24 18:54:33 -080022051 if ( pWDICtx->wdiLowLevelIndCB )
22052 {
22053 /*Notify UMAC*/
22054 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22055 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022056
Jeff Johnsone7245742012-09-05 17:12:55 -070022057 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022058}/*WDI_ProcessTxPerHitInd*/
22059
Jeff Johnson295189b2012-06-20 16:38:30 -070022060/**
Yue Mab9c86f42013-08-14 15:59:08 -070022061 @brief Process Periodic Tx Pattern Fw Indication function
22062
22063 @param pWDICtx: pointer to the WLAN DAL context
22064 pEventData: pointer to the event information structure
22065
22066 @see
22067 @return Result of the function call
22068*/
22069WDI_Status
22070WDI_ProcessPeriodicTxPtrnFwInd
22071(
22072 WDI_ControlBlockType* pWDICtx,
22073 WDI_EventInfoType* pEventData
22074)
22075{
22076 WDI_LowLevelIndType wdiInd;
22077
22078 /*-------------------------------------------------------------------------
22079 Sanity check
22080 -------------------------------------------------------------------------*/
22081 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22082 (NULL == pEventData->pEventData))
22083 {
22084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22085 "%s: Invalid parameters", __func__);
22086 WDI_ASSERT(0);
22087 return WDI_STATUS_E_FAILURE;
22088 }
22089
22090 /*-------------------------------------------------------------------------
22091 Extract indication and send it to UMAC
22092 -------------------------------------------------------------------------*/
22093 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22094 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22095 sizeof(tHalPeriodicTxPtrnFwInd));
22096
22097 if (pWDICtx->wdiLowLevelIndCB)
22098 {
22099 /*Notify UMAC*/
22100 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22101 }
22102
22103 return WDI_STATUS_SUCCESS;
22104}
22105
22106/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 @brief WDI_ProcessFTMCommandReq
22108 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022109
22110 @param pWDICtx: pointer to the WLAN DAL context
22111 pEventData: pointer to the event information structure
22112
Jeff Johnson295189b2012-06-20 16:38:30 -070022113 @see
22114 @return Result of the function call
22115*/
22116WDI_Status
22117WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022118(
Jeff Johnson295189b2012-06-20 16:38:30 -070022119 WDI_ControlBlockType* pWDICtx,
22120 WDI_EventInfoType* pEventData
22121)
22122{
22123 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22124 wpt_uint8 *ftmCommandBuffer = NULL;
22125 wpt_uint16 dataOffset;
22126 wpt_uint16 bufferSize;
22127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 -------------------------------------------------------------------------*/
22130 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22131 ( NULL == pEventData->pEventData))
22132
22133 {
22134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022138 }
22139
22140 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22141
22142 /* Get MSG Buffer */
22143 WDI_GetMessageBuffer(pWDICtx,
22144 WDI_FTM_CMD_REQ,
22145 ftmCommandReq->bodyLength,
22146 &ftmCommandBuffer,
22147 &dataOffset,
22148 &bufferSize);
22149
22150 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22151 ftmCommandReq->FTMCommandBody,
22152 ftmCommandReq->bodyLength);
22153
22154 /* Send MSG */
22155 return WDI_SendMsg(pWDICtx,
22156 ftmCommandBuffer,
22157 bufferSize,
22158 pEventData->pCBfnc,
22159 pEventData->pUserData,
22160 WDI_FTM_CMD_RESP);
22161}
22162
22163/**
22164 @brief WDI_ProcessFTMCommandRsp
22165 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022166
22167 @param pWDICtx: pointer to the WLAN DAL context
22168 pEventData: pointer to the event information structure
22169
Jeff Johnson295189b2012-06-20 16:38:30 -070022170 @see
22171 @return Result of the function call
22172*/
22173WDI_Status
22174WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022175(
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 WDI_ControlBlockType* pWDICtx,
22177 WDI_EventInfoType* pEventData
22178)
22179{
22180 WDI_FTMCommandRspCb ftmCMDRspCb;
22181 tProcessPttRspParams *ftmCMDRspData = NULL;
22182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22183
22184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 -------------------------------------------------------------------------*/
22187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22188 ( NULL == pEventData->pEventData))
22189 {
22190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 }
22195
22196 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22197
22198 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22199
Jeff Johnsone7245742012-09-05 17:12:55 -070022200 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22201 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022202 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22203
22204 /*Notify UMAC*/
22205 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22206
Jeff Johnsone7245742012-09-05 17:12:55 -070022207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022208}
Jeff Johnson295189b2012-06-20 16:38:30 -070022209/**
22210 @brief WDI_ProcessHalDumpCmdReq
22211 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022212
22213 @param pWDICtx: pointer to the WLAN DAL context
22214 pEventData: pointer to the event information structure
22215
Jeff Johnson295189b2012-06-20 16:38:30 -070022216 @see
22217 @return Result of the function call
22218*/
22219WDI_Status
22220WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022221(
Jeff Johnson295189b2012-06-20 16:38:30 -070022222 WDI_ControlBlockType* pWDICtx,
22223 WDI_EventInfoType* pEventData
22224)
22225{
22226 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22227 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22228 wpt_uint16 usDataOffset = 0;
22229 wpt_uint16 usSendSize = 0;
22230 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022231 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022232
22233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022235 -------------------------------------------------------------------------*/
22236 if (( NULL == pEventData ) ||
22237 ( NULL == pEventData->pEventData) ||
22238 ( NULL == pEventData->pCBfnc ))
22239 {
22240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022244 }
22245
22246 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
22247 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
22248
22249 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022250 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022251 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070022252 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022253 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070022260
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 /*-----------------------------------------------------------------------
22262 Get message buffer
22263 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
22266 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022268 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
22269 {
22270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022271 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
22273 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022275 }
22276
Jeff Johnsone7245742012-09-05 17:12:55 -070022277 wpalMemoryCopy( pSendBuffer+usDataOffset,
22278 &halDumpCmdReqMsg.dumpCmdReqParams,
22279 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022280
22281 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022283
22284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22288 wdiHALDumpCmdRspCb, pEventData->pUserData,
22289 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022290}
22291
22292/**
22293 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022294 Process hal Dump Command Response from HAL, simply route to HDD
22295
22296 @param pWDICtx: pointer to the WLAN DAL context
22297 pEventData: pointer to the event information structure
22298
Jeff Johnson295189b2012-06-20 16:38:30 -070022299 @see
22300 @return Result of the function call
22301*/
22302WDI_Status
22303WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022304(
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 WDI_ControlBlockType* pWDICtx,
22306 WDI_EventInfoType* pEventData
22307)
22308{
22309 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022310 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22312
22313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 -------------------------------------------------------------------------*/
22316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22317 ( NULL == pEventData->pEventData))
22318 {
22319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022323 }
22324
Jeff Johnsone7245742012-09-05 17:12:55 -070022325 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022326
22327 /*Initialize the WDI Response structure */
22328 wdiHALDumpCmdRsp.usBufferLen = 0;
22329 wdiHALDumpCmdRsp.pBuffer = NULL;
22330
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022331 wpalMemoryCopy( &halDumpCmdRspParams,
22332 pEventData->pEventData,
22333 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022334
22335 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022336 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022337
22338 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022339 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022340 {
22341 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022342 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22343 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22344
22345 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22346 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022347 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022349
Jeff Johnson295189b2012-06-20 16:38:30 -070022350 /*Notify UMAC*/
22351 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22352
22353 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22354 {
22355 /* Free the allocated buffer */
22356 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22357 }
22358 return WDI_STATUS_SUCCESS;
22359}
22360
22361/*==========================================================================
22362 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022363
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022366==========================================================================*/
22367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 when it wishes to send up a notification like the ones
22370 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022371
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022373
22374 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022376 wctsNotifyCBData: the callback data of the user
22377
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022379
22380 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022381*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022382void
Jeff Johnson295189b2012-06-20 16:38:30 -070022383WDI_NotifyMsgCTSCB
22384(
Jeff Johnsone7245742012-09-05 17:12:55 -070022385 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022386 WCTS_NotifyEventType wctsEvent,
22387 void* wctsNotifyCBData
22388)
22389{
Jeff Johnsone7245742012-09-05 17:12:55 -070022390 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22392
22393 if (NULL == pWDICtx )
22394 {
22395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022398 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022399 }
22400
22401 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22402 {
22403 /* callback presumably occurred after close */
22404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022405 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022406 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022407 }
22408
22409 if ( WCTS_EVENT_OPEN == wctsEvent )
22410 {
22411 /*Flag must be set atomically as it is checked from incoming request
22412 functions*/
22413 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022415
22416 /*Nothing to do - so try to dequeue any pending request that may have
22417 occurred while we were trying to establish this*/
22418 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022420 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022421 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 {
22423 /*Flag must be set atomically as it is checked from incoming request
22424 functions*/
22425 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022427
22428 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022429 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022430 wpalMutexRelease(&pWDICtx->wptMutex);
22431
22432 /*Notify that the Control Channel is closed */
22433 wpalEventSet(&pWDICtx->wctsActionEvent);
22434 }
22435
22436}/*WDI_NotifyMsgCTSCB*/
22437
22438
22439/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022440 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022441 when it wishes to send up a packet received over the
22442 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022443
Jeff Johnson295189b2012-06-20 16:38:30 -070022444 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022445
22446 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 pMsg: the packet
22448 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 wctsRxMsgCBData: the callback data of the user
22450
Jeff Johnson295189b2012-06-20 16:38:30 -070022451 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022452
22453 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022454*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022455void
22456WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022457(
Jeff Johnsone7245742012-09-05 17:12:55 -070022458 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 void* pMsg,
22460 wpt_uint32 uLen,
22461 void* wctsRxMsgCBData
22462)
22463{
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 tHalMsgHeader *pHalMsgHeader;
22465 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22468
22469 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022473 ( uLen < sizeof(tHalMsgHeader)))
22474 {
22475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022478 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022479 }
22480
22481 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22482 {
22483 /* callback presumably occurred after close */
22484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022485 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022486 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022487 }
22488
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 context - so no serialization is necessary here
22491 ! - revisit this assumption */
22492
22493 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22494
22495 if ( uLen != pHalMsgHeader->msgLen )
22496 {
22497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22498 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022499 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022500 wpalWlanReload();
22501
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 }
22504
22505 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22506
22507 /*The message itself starts after the header*/
22508 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22509 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22510 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22511 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22512
22513
22514 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22515 {
22516 /*Stop the timer as the response was received */
22517 /*!UT - check for potential race conditions between stop and response */
22518 wpalTimerStop(&pWDICtx->wptResponseTimer);
22519 }
22520 /* Check if we receive a response message which is not expected */
22521 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22522 {
22523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22524 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22525 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22528 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022529
22530 if (gWDICb.bEnableSSR == false)
22531 {
22532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22533 "SSR is not enabled on WDI timeout");
22534 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22535 return;
22536 }
22537 wpalWcnssResetIntr();
22538 /* if this timer fires, it means Riva did not receive the FIQ */
22539 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22540
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 return;
22542 }
22543
22544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22545 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22546
22547 /*Post response event to the state machine*/
22548 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22549
22550}/*WDI_RXMsgCTSCB*/
22551
22552
22553/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022554 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022555========================================================================*/
22556
22557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022559 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022560
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 @param pWDICtx - pointer to the control block
22562
22563 @return Result of the function call
22564*/
22565WPT_INLINE WDI_Status
22566WDI_CleanCB
22567(
22568 WDI_ControlBlockType* pWDICtx
22569)
22570{
22571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22572
22573 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022574 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022575
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22578 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22579
22580 WDI_ResetAssocSessions( pWDICtx );
22581
22582 return WDI_STATUS_SUCCESS;
22583}/*WDI_CleanCB*/
22584
22585
22586/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022588
Jeff Johnsone7245742012-09-05 17:12:55 -070022589
22590 @param pWDICtx: pointer to the WLAN DAL context
22591 pEventData: pointer to the event information structure
22592
Jeff Johnson295189b2012-06-20 16:38:30 -070022593 @see
22594 @return Result of the function call
22595*/
22596WPT_INLINE WDI_Status
22597WDI_ProcessRequest
22598(
22599 WDI_ControlBlockType* pWDICtx,
22600 WDI_EventInfoType* pEventData
22601)
22602{
22603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22604
Jeff Johnsone7245742012-09-05 17:12:55 -070022605 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022606 already checked these pointers*/
22607
22608 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22609 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022610 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022612 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 WDI_getReqMsgString(pEventData->wdiRequest),
22614 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22615 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22616 }
22617 else
22618 {
22619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022620 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022621 pEventData->wdiRequest);
22622 return WDI_STATUS_E_NOT_IMPLEMENT;
22623 }
22624}/*WDI_ProcessRequest*/
22625
22626
22627/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022628 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022629 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 prefixes it with a send message header
22631
22632 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 wdiReqType: type of the request being sent
22634 uBufferLen: message buffer len
22635 pMsgBuffer: resulting allocated buffer
22636 pusDataOffset: offset in the buffer where the caller
22637 can start copying its message data
22638 puBufferSize: the resulting buffer size (offset+buff
22639 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022640
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 @see
22642 @return Result of the function call
22643*/
22644WDI_Status
22645WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022646(
22647 WDI_ControlBlockType* pWDICtx,
22648 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022649 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022650 wpt_uint8** pMsgBuffer,
22651 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022652 wpt_uint16* pusBufferSize
22653)
22654{
22655 tHalMsgHeader halMsgHeader;
22656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22657
Jeff Johnsone7245742012-09-05 17:12:55 -070022658 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022659 again*/
22660
22661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022662 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022664 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022665 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22666 if ( NULL == *pMsgBuffer )
22667 {
22668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22669 "Unable to allocate message buffer for req %s (%d)",
22670 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022671 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022673 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 }
22675
22676 /*-------------------------------------------------------------------------
22677 Fill in the message header
22678 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22680 /* Fill msgVersion */
22681#ifdef WLAN_FEATURE_11AC
22682 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022683 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022684 else
22685#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022686 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022687
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22689 *pusDataOffset = sizeof(halMsgHeader);
22690 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22691
22692 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022693}/*WDI_GetMessageBuffer*/
22694
22695
22696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022697 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022698 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022699 the CB
22700
22701 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022702 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022703
Jeff Johnson295189b2012-06-20 16:38:30 -070022704 usSendSize size of the buffer to be sent
22705 pRspCb: response callback - save in the WDI
22706 CB
22707 pUserData: user data associated with the
22708 callback
22709 wdiExpectedResponse: the code of the response that is
22710 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022711
Jeff Johnson295189b2012-06-20 16:38:30 -070022712 @see
22713 @return Result of the function call
22714*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022715WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022716WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022717(
22718 WDI_ControlBlockType* pWDICtx,
22719 wpt_uint8* pSendBuffer,
22720 wpt_uint32 usSendSize,
22721 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022722 void* pUserData,
22723 WDI_ResponseEnumType wdiExpectedResponse
22724)
22725{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022726 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022727 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22729
22730 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022731 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022732 ------------------------------------------------------------------------*/
22733 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 pWDICtx->pfncRspCB = pRspCb;
22735 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022736
22737 /*-----------------------------------------------------------------------
22738 Call the CTS to send this message over - free message afterwards
22739 - notify transport failure
22740 Note: CTS is reponsible for freeing the message buffer.
22741 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022742 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22743 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22744 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022747 "Failed to send message with expected response %s (%d)"
22748 " over the bus - catastrophic failure",
22749 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22750 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022751
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022752 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22753 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022755 else
22756 {
22757 /* even when message was placed in CTS deferred Q, we will treat it
22758 success but log this info
22759 */
22760 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22761 {
22762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22763 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22764 "response %s (%d)",
22765 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22766 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022767 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022768 }
22769 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022770
Jeff Johnsond13512a2012-07-17 11:42:19 -070022771 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 if ( NULL != pWDICtx->wdiReqStatusCB )
22773 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022774 /*Inform originator whether request went through or not*/
22775 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22776 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 pWDICtx->wdiReqStatusCB = NULL;
22778 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022779 callback(wdiStatus, callbackContext);
22780
22781 /*For WDI requests which have registered a request callback,
22782 inform the WDA caller of the same via setting the return value
22783 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22784 end up repeating the functonality in the req callback for the
22785 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022786 if (wdiStatus != WDI_STATUS_SUCCESS)
22787 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022788 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022789 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 }
22791
Jeff Johnsond13512a2012-07-17 11:42:19 -070022792 if ( wdiStatus == WDI_STATUS_SUCCESS )
22793 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022794 /*Start timer for the expected response */
22795 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022796
22797 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022798 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022799 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022800 }
22801 else
22802 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022803 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022804 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22805 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022806
Jeff Johnsond13512a2012-07-17 11:42:19 -070022807 return wdiStatus;
22808
Jeff Johnson295189b2012-06-20 16:38:30 -070022809}/*WDI_SendMsg*/
22810
22811
22812
22813/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 the bus using the control transport and saves some info
22816 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022817
22818 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022819 pSendBuffer: buffer to be sent
22820 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022821
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 @see
22823 @return Result of the function call
22824*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022825WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022826WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022827(
22828 WDI_ControlBlockType* pWDICtx,
22829 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 wpt_uint32 usSendSize
22831)
22832{
22833 wpt_uint32 uStatus ;
22834 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22835
22836 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022837 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022838 Note: CTS is reponsible for freeing the message buffer.
22839 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022841 (void*)pSendBuffer, usSendSize );
22842
22843 /*Inform Upper MAC about the outcome of the request*/
22844 if ( NULL != pWDICtx->wdiReqStatusCB )
22845 {
22846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22847 "Send indication status : %d", uStatus);
22848
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022849 /* even if CTS placed indication into its deferred Q, we treat it
22850 * as success and let CTS drain its queue as per smd interrupt to CTS
22851 */
22852 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 -070022853 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022854 }
22855
22856 /*If sending of the message failed - it is considered catastrophic and
22857 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022858 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22859 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22860
Jeff Johnson295189b2012-06-20 16:38:30 -070022861 {
22862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022863 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022864
22865 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22866 return WDI_STATUS_E_FAILURE;
22867 }
22868
Jeff Johnsone7245742012-09-05 17:12:55 -070022869 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022870}/*WDI_SendIndication*/
22871
22872
22873/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022874 @brief WDI_DetectedDeviceError - called internally by DAL when
22875 it has detected a failure in the device
22876
22877 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022878 usErrorCode: error code detected by WDI or received
22879 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022880
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022882 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022883*/
22884void
22885WDI_DetectedDeviceError
22886(
22887 WDI_ControlBlockType* pWDICtx,
22888 wpt_uint16 usErrorCode
22889)
22890{
22891 WDI_LowLevelIndType wdiInd;
22892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22893
22894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22895 "Device Error detected code: %d - transitioning to stopped state",
22896 usErrorCode);
22897
Katya Nigamf02ad012014-05-05 16:12:49 +053022898 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22899
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 wpalMutexAcquire(&pWDICtx->wptMutex);
22901
22902 WDI_STATableStop(pWDICtx);
22903
22904 WDI_ResetAssocSessions(pWDICtx);
22905
22906 /*Set the expected state transition to stopped - because the device
22907 experienced a failure*/
22908 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22909
22910 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022911 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022912
Jeff Johnsone7245742012-09-05 17:12:55 -070022913 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022914
22915 /*TO DO: - there should be an attempt to reset the device here*/
22916
22917 wpalMutexRelease(&pWDICtx->wptMutex);
22918
22919 /*------------------------------------------------------------------------
22920 Notify UMAC if a handler is registered
22921 ------------------------------------------------------------------------*/
22922 if (pWDICtx->wdiLowLevelIndCB)
22923 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022924 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22925 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022926
22927 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22928 }
22929}/*WDI_DetectedDeviceError*/
22930
22931/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022932 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 we started on send message has expire - this should
22934 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022935 reply - trigger catastrophic failure
22936 @param
22937
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022939
22940 @see
22941 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022942*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022943void
Jeff Johnson295189b2012-06-20 16:38:30 -070022944WDI_ResponseTimerCB
22945(
22946 void *pUserData
22947)
22948{
22949 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22951
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022952 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022957 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 }
22959
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022960 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022961 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022962 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022963
22964 /* If response timer is running at this time that means this timer
22965 * event is not for the last request but rather last-to-last request and
22966 * this timer event has come after we recevied respone for last-to-last
22967 * message
22968 */
22969 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22970 {
22971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22972 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022973 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022974 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22976 "uArchTimeStampTmrStart: %llu seconds, "
22977 "uArchTimeStampTmrExp: %llu seconds",
22978 pWDICtx->uArchTimeStampRspTmrStart,
22979 pWDICtx->uArchTimeStampRspTmrExp);
22980
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022981 return;
22982 }
22983
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022984 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 {
22986
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022988 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022989 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022991 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22992 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22994 "uArchTimeStampTmrStart: %llu seconds, "
22995 "uArchTimeStampTmrExp: %llu seconds",
22996 pWDICtx->uArchTimeStampRspTmrStart,
22997 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022998
22999 /* WDI timeout means Riva is not responding or SMD communication to Riva
23000 * is not happening. The only possible way to recover from this error
23001 * is to initiate SSR from APPS.
23002 * There is also an option to re-enable wifi, which will eventually
23003 * trigger SSR
23004 */
23005 if (gWDICb.bEnableSSR == false)
23006 {
23007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23008 "SSR is not enabled on WDI timeout");
23009 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23010 return;
23011 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023012#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023013 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053023014 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053023015 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053023016 if(wpalIsSsrPanicOnFailure())
23017 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053023018 } else {
23019 /* if this timer fires, it means Riva did not receive the FIQ */
23020 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053023021 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023022#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023023 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23024 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023025#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 }
23027 else
23028 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023030 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023031 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023032 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23033 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23035 "uArchTimeStampTmrStart: %llu seconds, "
23036 "uArchTimeStampTmrExp: %llu seconds",
23037 pWDICtx->uArchTimeStampRspTmrStart,
23038 pWDICtx->uArchTimeStampRspTmrExp);
23039
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 }
23041
23042 return;
23043
23044}/*WDI_ResponseTimerCB*/
23045
23046
23047/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023049
Jeff Johnsone7245742012-09-05 17:12:55 -070023050
23051 @param pWDICtx: pointer to the WLAN DAL context
23052 pEventData: pointer to the event information structure
23053
Jeff Johnson295189b2012-06-20 16:38:30 -070023054 @see
23055 @return Result of the function call
23056*/
23057WPT_INLINE WDI_Status
23058WDI_ProcessResponse
23059(
23060 WDI_ControlBlockType* pWDICtx,
23061 WDI_EventInfoType* pEventData
23062)
23063{
23064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23065
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023067 already checked these pointers
23068 ! - revisit this assumption */
23069 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23070 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023071 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023073 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 WDI_getRespMsgString(pEventData->wdiResponse),
23075 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23076 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23077 }
23078 else
23079 {
23080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 pEventData->wdiResponse);
23083 return WDI_STATUS_E_NOT_IMPLEMENT;
23084 }
23085}/*WDI_ProcessResponse*/
23086
23087
23088/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023089 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023090=========================================================================*/
23091
23092/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 @brief Utility function used by the DAL Core to help queue a
23094 request that cannot be processed right away.
23095 @param
23096
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 pWDICtx: - pointer to the WDI control block
23098 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023099 queued
23100
23101 @see
23102 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023103*/
23104WDI_Status
23105WDI_QueuePendingReq
23106(
23107 WDI_ControlBlockType* pWDICtx,
23108 WDI_EventInfoType* pEventData
23109)
23110{
Jeff Johnsone7245742012-09-05 17:12:55 -070023111 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023112 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023113 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23115
23116 if ( NULL == pEventDataQueue )
23117 {
23118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023120 WDI_ASSERT(0);
23121 return WDI_STATUS_MEM_FAILURE;
23122 }
23123
23124 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23125 pEventDataQueue->pUserData = pEventData->pUserData;
23126 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23127 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023128 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023129
23130 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23131 {
23132 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023133
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 if ( NULL == pEventInfo )
23135 {
23136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023137 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023138 WDI_ASSERT(0);
23139 wpalMemoryFree(pEventDataQueue);
23140 return WDI_STATUS_MEM_FAILURE;
23141 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023142
Jeff Johnson295189b2012-06-20 16:38:30 -070023143 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23144
23145 }
23146 pEventDataQueue->pEventData = pEventInfo;
23147
23148 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023149 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023150
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023151 if (eWLAN_PAL_STATUS_E_FAILURE ==
23152 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23153 {
23154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23155 "pEventDataQueue wpal_list_insert_back failed");
23156 WDI_ASSERT(0);
23157 wpalMemoryFree(pEventDataQueue);
23158 wpalMemoryFree(pEventInfo);
23159 return WDI_STATUS_MEM_FAILURE;
23160 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023161
23162 return WDI_STATUS_SUCCESS;
23163}/*WDI_QueuePendingReq*/
23164
23165/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023166 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023167 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023168 @param
23169
23170 pMsg - pointer to the message
23171
23172 @see
23173 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023174*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023175void
Jeff Johnson295189b2012-06-20 16:38:30 -070023176WDI_PALCtrlMsgCB
23177(
23178 wpt_msg *pMsg
23179)
23180{
23181 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023182 WDI_ControlBlockType* pWDICtx = NULL;
23183 WDI_Status wdiStatus;
23184 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023185 void* pUserData;
23186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23187
23188 if (( NULL == pMsg )||
23189 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23190 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23191 {
23192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023193 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 }
23197
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023198 /*Access to the global state must be locked */
23199 wpalMutexAcquire(&pWDICtx->wptMutex);
23200
Jeff Johnson295189b2012-06-20 16:38:30 -070023201 /*Transition back to the state that we had before serialization
23202 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023203 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023204 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023205 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023206
23207 /*-----------------------------------------------------------------------
23208 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023210 -----------------------------------------------------------------------*/
23211 switch ( pEventData->wdiRequest )
23212 {
23213
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23216 break;
23217
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 case WDI_NV_DOWNLOAD_REQ:
23219 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23220 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23221 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23222 {
23223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023224 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023225 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23226 }
23227 else
23228 {
23229 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23230 }
23231
23232 break;
23233
23234 default:
23235 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23236 break;
23237 }/*switch ( pEventData->wdiRequest )*/
23238
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053023239 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053023240 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 {
23242 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
23243
23244 if ( NULL != pfnReqStatusCB )
23245 {
23246 /*Fail the request*/
23247 pfnReqStatusCB( wdiStatus, pUserData);
23248 }
23249 }
23250
23251 /* Free data - that was allocated when queueing*/
23252 if( pEventData != NULL )
23253 {
23254 if( pEventData->pEventData != NULL )
23255 {
23256 wpalMemoryFree(pEventData->pEventData);
23257 }
23258 wpalMemoryFree(pEventData);
23259 }
23260
23261 if( pMsg != NULL )
23262 {
23263 wpalMemoryFree(pMsg);
23264 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023265
Jeff Johnson295189b2012-06-20 16:38:30 -070023266}/*WDI_PALCtrlMsgCB*/
23267
23268/**
23269 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070023270 and schedule for execution a pending request
23271 @param
23272
Jeff Johnson295189b2012-06-20 16:38:30 -070023273 pWDICtx: - pointer to the WDI control block
23274 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023275 queued
23276
23277 @see
23278 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023279*/
23280WDI_Status
23281WDI_DequeuePendingReq
23282(
23283 WDI_ControlBlockType* pWDICtx
23284)
23285{
Jeff Johnsone7245742012-09-05 17:12:55 -070023286 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023288 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23290
Jeff Johnsone7245742012-09-05 17:12:55 -070023291 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023292
23293 if ( NULL == pNode )
23294 {
23295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023296 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023297 return WDI_STATUS_SUCCESS;
23298 }
23299
23300 /*The node actually points to the 1st element inside the Event Data struct -
23301 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303
23304 /*Serialize processing in the control thread
23305 !TO DO: - check to see if these are all the messages params that need
23306 to be filled in*/
23307 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23308
23309 if ( NULL == palMsg )
23310 {
23311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023314 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023316 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023317 palMsg->callback = WDI_PALCtrlMsgCB;
23318 palMsg->ptr = pEventData;
23319
23320 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023321 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023322 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023323
Jeff Johnson295189b2012-06-20 16:38:30 -070023324 /*Transition back to BUSY as we need to handle a queued request*/
23325 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023326
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23328
23329 return WDI_STATUS_PENDING;
23330}/*WDI_DequeuePendingReq*/
23331
23332
23333/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023334 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023335 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023336 away.- The assoc requests will be queued by BSSID
23337 @param
23338
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 pWDICtx: - pointer to the WDI control block
23340 pEventData: pointer to the evnt info that needs to be queued
23341 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023342
23343 @see
23344 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023345*/
23346WDI_Status
23347WDI_QueueNewAssocRequest
23348(
23349 WDI_ControlBlockType* pWDICtx,
23350 WDI_EventInfoType* pEventData,
23351 wpt_macAddr macBSSID
23352)
23353{
Jeff Johnsone7245742012-09-05 17:12:55 -070023354 wpt_uint8 i;
23355 WDI_BSSSessionType* pSession = NULL;
23356 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023357 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023358 void* pEventInfo;
23359 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023361
Jeff Johnsone7245742012-09-05 17:12:55 -070023362
23363 /*------------------------------------------------------------------------
23364 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023365 ------------------------------------------------------------------------*/
23366 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23367 {
23368 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23369 {
23370 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023371 pSession = &pWDICtx->aBSSSessions[i];
23372 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 }
23374 }
23375
23376 if ( i >= WDI_MAX_BSS_SESSIONS )
23377 {
23378 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023381
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 /*------------------------------------------------------------------------
23383 Fill in the BSSID for this session and set the usage flag
23384 ------------------------------------------------------------------------*/
23385 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023386 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023387
23388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 ------------------------------------------------------------------------*/
23391 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23392 if ( NULL == pEventDataQueue )
23393 {
23394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023395 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 WDI_ASSERT(0);
23397 return WDI_STATUS_MEM_FAILURE;
23398 }
23399
23400 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23401 if ( NULL == pSessionIdElement )
23402 {
23403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023404 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023405 WDI_ASSERT(0);
23406 wpalMemoryFree(pEventDataQueue);
23407 return WDI_STATUS_MEM_FAILURE;
23408 }
23409
23410 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23411 if ( NULL == pEventInfo )
23412 {
23413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023414 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 WDI_ASSERT(0);
23416 wpalMemoryFree(pSessionIdElement);
23417 wpalMemoryFree(pEventDataQueue);
23418 return WDI_STATUS_MEM_FAILURE;
23419 }
23420
23421 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23422 pEventDataQueue->pUserData = pEventData->pUserData;
23423 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23424 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023426
23427 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23428 pEventDataQueue->pEventData = pEventInfo;
23429
23430 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023431 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023432
23433 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023434 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023435
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023436 if (eWLAN_PAL_STATUS_E_FAILURE ==
23437 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23438 {
23439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23440 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23441 WDI_ASSERT(0);
23442 wpalMemoryFree(pSessionIdElement);
23443 wpalMemoryFree(pEventDataQueue);
23444 wpalMemoryFree(pEventInfo);
23445 return WDI_STATUS_MEM_FAILURE;
23446 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023447
23448 /*We need to maintain a separate list that keeps track of the order in which
23449 the new assoc requests are being queued such that we can start processing
23450 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023451 pSessionIdElement->ucIndex = i;
23452 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023453
23454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23455 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023456 if (eWLAN_PAL_STATUS_E_FAILURE ==
23457 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23458 {
23459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23460 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23461 WDI_ASSERT(0);
23462 wpalMemoryFree(pSessionIdElement);
23463 wpalMemoryFree(pEventDataQueue);
23464 wpalMemoryFree(pEventInfo);
23465 return WDI_STATUS_MEM_FAILURE;
23466 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023467
23468 /*Return pending as this is what the status of the request is since it has
23469 been queued*/
23470 return WDI_STATUS_PENDING;
23471}/*WDI_QueueNewAssocRequest*/
23472
23473/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023474 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023475 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023476 away.- The assoc requests will be queued by BSSID
23477 @param
23478
Jeff Johnson295189b2012-06-20 16:38:30 -070023479 pWDICtx: - pointer to the WDI control block
23480 pSession: - session in which to queue
23481 pEventData: pointer to the event info that needs to be
23482 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023483
23484 @see
23485 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023486*/
23487WDI_Status
23488WDI_QueueAssocRequest
23489(
23490 WDI_ControlBlockType* pWDICtx,
23491 WDI_BSSSessionType* pSession,
23492 WDI_EventInfoType* pEventData
23493)
23494{
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023496 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023499
23500 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 Sanity check
23502 ------------------------------------------------------------------------*/
23503 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23504 {
23505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023506 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023507
Jeff Johnsone7245742012-09-05 17:12:55 -070023508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023509 }
23510
23511 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023512 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023513 ------------------------------------------------------------------------*/
23514 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23515 if ( NULL == pEventDataQueue )
23516 {
23517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023518 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023519 WDI_ASSERT(0);
23520 return WDI_STATUS_MEM_FAILURE;
23521 }
23522
23523 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23524 if ( NULL == pEventInfo )
23525 {
23526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23527 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023528 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023529 WDI_ASSERT(0);
23530 wpalMemoryFree(pEventDataQueue);
23531 return WDI_STATUS_MEM_FAILURE;
23532 }
23533
23534 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23535 pEventDataQueue->pUserData = pEventData->pUserData;
23536 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23537 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023538 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 pEventDataQueue->pEventData = pEventInfo;
23540
23541 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23542
23543 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023545
23546 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023548
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023549 if (eWLAN_PAL_STATUS_E_FAILURE ==
23550 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23551 {
23552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23553 "%s: Cannot allocate memory for queueing event data info",
23554 __func__);
23555 WDI_ASSERT(0);
23556 wpalMemoryFree(pEventDataQueue);
23557 wpalMemoryFree(pEventInfo);
23558 return WDI_STATUS_MEM_FAILURE;
23559 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023560
23561 /*The result of this operation is pending because the request has been
23562 queued and it will be processed at a later moment in time */
23563 return WDI_STATUS_PENDING;
23564}/*WDI_QueueAssocRequest*/
23565
23566/**
23567 @brief Utility function used by the DAL Core to help dequeue
23568 an association request that was pending
23569 The request will be queued up in front of the main
23570 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023571 @param
23572
Jeff Johnson295189b2012-06-20 16:38:30 -070023573 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023574
23575
23576 @see
23577 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023578*/
23579WDI_Status
23580WDI_DequeueAssocRequest
23581(
23582 WDI_ControlBlockType* pWDICtx
23583)
23584{
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 wpt_list_node* pNode = NULL;
23586 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 WDI_BSSSessionType* pSession;
23588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023589
23590 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023591 Sanity check
23592 ------------------------------------------------------------------------*/
23593 if ( NULL == pWDICtx )
23594 {
23595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023597
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023599 }
23600
23601 /*------------------------------------------------------------------------
23602 An association has been completed => a new association can occur
23603 Check to see if there are any pending associations ->
23604 If so , transfer all the pending requests into the busy queue for
23605 processing
23606 These requests have arrived prior to the requests in the busy queue
23607 (bc they needed to be processed in order to be placed in this queue)
23608 => they will be placed at the front of the busy queue
23609 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023610 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023611
23612 if ( NULL == pNode )
23613 {
23614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 return WDI_STATUS_SUCCESS;
23617 }
23618
23619 /*The node actually points to the 1st element inside the Session Id struct -
23620 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023621 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023622
23623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23624 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23625
23626 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23627 {
23628 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023629
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023631 the front of the main waiting queue for subsequent execution*/
23632 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 while ( NULL != pNode )
23634 {
23635 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023636 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23637 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023639 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 }
23641 else
23642 {
23643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 WPAL_ASSERT(0);
23646 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023649
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23651 wpalMemoryFree(pSessionIdElement);
23652 return WDI_STATUS_SUCCESS;
23653}/*WDI_DequeueAssocRequest*/
23654
23655/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023657 pending requests - all req cb will be called with
23658 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023659 @param
23660
Jeff Johnson295189b2012-06-20 16:38:30 -070023661 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023662
23663 @see
23664 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023665*/
23666WDI_Status
23667WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023668(
Jeff Johnson295189b2012-06-20 16:38:30 -070023669 WDI_ControlBlockType* pWDICtx
23670)
23671{
Jeff Johnsone7245742012-09-05 17:12:55 -070023672 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023674 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023675 void* pUserData;
23676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23677
Jeff Johnsone7245742012-09-05 17:12:55 -070023678 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023679
23680 /*------------------------------------------------------------------------
23681 Go through all the requests and fail them - this will only be called
23682 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 ------------------------------------------------------------------------*/
23685 while( pNode )
23686 {
23687 /*The node actually points to the 1st element inside the Event Data struct -
23688 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 pEventDataQueue = (WDI_EventInfoType*)pNode;
23690
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23692 if ( NULL != pfnReqStatusCB )
23693 {
23694 /*Fail the request*/
23695 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23696 }
23697 /* Free data - that was allocated when queueing */
23698 if ( pEventDataQueue->pEventData != NULL )
23699 {
23700 wpalMemoryFree(pEventDataQueue->pEventData);
23701 }
23702 wpalMemoryFree(pEventDataQueue);
23703
23704 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23705 {
23706 break;
23707 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023708 }
23709
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 return WDI_STATUS_SUCCESS;
23711}/*WDI_ClearPendingRequests*/
23712
23713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 @brief Helper routine used to init the BSS Sessions in the WDI control block
23715
23716
23717 @param pWDICtx: pointer to the WLAN DAL context
23718
Jeff Johnson295189b2012-06-20 16:38:30 -070023719 @see
23720*/
23721void
23722WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023723(
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 WDI_ControlBlockType* pWDICtx
23725)
23726{
Jeff Johnsone7245742012-09-05 17:12:55 -070023727 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23729
23730 /*-------------------------------------------------------------------------
23731 No Sanity check
23732 -------------------------------------------------------------------------*/
23733 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23734 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23737 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23738 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23739 }
23740}/*WDI_ResetAssocSessions*/
23741
23742/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 @brief Helper routine used to find a session based on the BSSID
23744
23745
23746 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023748 pSession: pointer to the session (if found)
23749
Jeff Johnson295189b2012-06-20 16:38:30 -070023750 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023751 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023752*/
23753wpt_uint8
23754WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023755(
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 WDI_ControlBlockType* pWDICtx,
23757 wpt_macAddr macBSSID,
23758 WDI_BSSSessionType** ppSession
23759)
23760{
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23763
23764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023766 -------------------------------------------------------------------------*/
23767 if ( NULL == ppSession )
23768 {
23769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023770 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023772 }
23773
Jeff Johnsone7245742012-09-05 17:12:55 -070023774 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023775
Jeff Johnsone7245742012-09-05 17:12:55 -070023776 /*------------------------------------------------------------------------
23777 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 ------------------------------------------------------------------------*/
23779 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23780 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023781 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23782 (eWLAN_PAL_TRUE ==
23783 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23784 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023785 {
23786 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023787 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 return i;
23789 }
23790 }
23791
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023793}/*WDI_FindAssocSession*/
23794
23795/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 @brief Helper routine used to find a session based on the BSSID
23797
23798
23799 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 ucBSSIdx: BSS Index of the session
23801 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023802
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023804 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023805*/
23806wpt_uint8
23807WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023808(
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 WDI_ControlBlockType* pWDICtx,
23810 wpt_uint16 ucBSSIdx,
23811 WDI_BSSSessionType** ppSession
23812)
23813{
Jeff Johnsone7245742012-09-05 17:12:55 -070023814 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23816
23817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023818 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023819 -------------------------------------------------------------------------*/
23820 if ( NULL == ppSession )
23821 {
23822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023823 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023825 }
23826
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023828
Jeff Johnsone7245742012-09-05 17:12:55 -070023829 /*------------------------------------------------------------------------
23830 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023831 ------------------------------------------------------------------------*/
23832 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23833 {
23834 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23835 {
23836 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023837 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023838 return i;
23839 }
23840 }
23841
Jeff Johnsone7245742012-09-05 17:12:55 -070023842 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023843}/*WDI_FindAssocSessionByBSSIdx*/
23844
23845/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023846 @brief Helper routine used to find a session based on the BSSID
23847
23848
23849 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023850 ucBSSIdx: BSS Index of the session
23851 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023852
Jeff Johnson295189b2012-06-20 16:38:30 -070023853 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023854 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023855*/
23856wpt_uint8
23857WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023858(
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 WDI_ControlBlockType* pWDICtx,
23860 wpt_uint16 usIdx,
23861 WDI_BSSSessionType** ppSession
23862)
23863{
23864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23865
23866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023868 -------------------------------------------------------------------------*/
23869 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23870 {
23871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023872 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023874 }
23875
23876 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023878
23879 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023880
Jeff Johnson295189b2012-06-20 16:38:30 -070023881}/*WDI_FindAssocSessionByBSSIdx*/
23882
23883/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023884 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023886
23887
23888 @param pWDICtx: pointer to the WLAN DAL context
23889 pSession: pointer to the session (if found)
23890
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023893*/
23894wpt_uint8
23895WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023896(
Jeff Johnson295189b2012-06-20 16:38:30 -070023897 WDI_ControlBlockType* pWDICtx,
23898 WDI_BSSSessionType** ppSession
23899)
23900{
Jeff Johnsone7245742012-09-05 17:12:55 -070023901 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023905 -------------------------------------------------------------------------*/
23906 if ( NULL == ppSession )
23907 {
23908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023909 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023910 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023911 }
23912
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023914
Jeff Johnsone7245742012-09-05 17:12:55 -070023915 /*------------------------------------------------------------------------
23916 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023917 ------------------------------------------------------------------------*/
23918 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23919 {
23920 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23921 {
23922 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023923 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023924 return i;
23925 }
23926 }
23927
Jeff Johnsone7245742012-09-05 17:12:55 -070023928 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023929}/*WDI_FindEmptySession*/
23930
23931
23932/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023935
23936
23937 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023938 macBSSID: pointer to BSSID. If NULL, get all the session.
23939 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23940 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23941 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 @see
23943 @return Number of sessions in use
23944*/
23945wpt_uint8
23946WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023947(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023948 WDI_ControlBlockType* pWDICtx,
23949 wpt_macAddr macBSSID,
23950 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023951)
23952{
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023955
23956 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 Count all sessions in use
23958 ------------------------------------------------------------------------*/
23959 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23960 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023961 if ( macBSSID && skipBSSID &&
23962 (eWLAN_PAL_TRUE ==
23963 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23964 WDI_MAC_ADDR_LEN)))
23965 {
23966 continue;
23967 }
23968 else if ( pWDICtx->aBSSSessions[i].bInUse )
23969 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023971 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023972 }
23973
Jeff Johnsone7245742012-09-05 17:12:55 -070023974 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023975}/*WDI_GetActiveSessionsCount*/
23976
23977/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023978 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023979 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023980
23981
23982 @param pWDICtx: pointer to the WLAN DAL context
23983 pSession: pointer to the session (if found)
23984
Jeff Johnson295189b2012-06-20 16:38:30 -070023985 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023986 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023987*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023988void
Jeff Johnson295189b2012-06-20 16:38:30 -070023989WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023990(
Jeff Johnson295189b2012-06-20 16:38:30 -070023991 WDI_ControlBlockType* pWDICtx,
23992 WDI_BSSSessionType* ppSession
23993)
23994{
23995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023997 -------------------------------------------------------------------------*/
23998 if ( NULL == ppSession )
23999 {
24000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024001 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024002 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 }
24004
Jeff Johnsone7245742012-09-05 17:12:55 -070024005 /*------------------------------------------------------------------------
24006 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070024007 ------------------------------------------------------------------------*/
24008 wpal_list_destroy(&ppSession->wptPendingQueue);
24009 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
24011 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
24013 wpal_list_init(&ppSession->wptPendingQueue);
24014
24015}/*WDI_DeleteSession*/
24016
24017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070024020 @param
24021
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 WDI_AddStaParams: - pointer to the WDI Add STA params
24023 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070024024
24025 @see
24026 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070024027*/
24028void
24029WDI_AddBcastSTAtoSTATable
24030(
24031 WDI_ControlBlockType* pWDICtx,
24032 WDI_AddStaParams * staParams,
24033 wpt_uint16 usBcastStaIdx
24034)
24035{
24036 WDI_AddStaParams wdiAddSTAParam = {0};
24037 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
24038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24039
24040 /*---------------------------------------------------------------------
24041 Sanity check
24042 ---------------------------------------------------------------------*/
24043 if ( NULL == staParams )
24044 {
24045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024047
Jeff Johnsone7245742012-09-05 17:12:55 -070024048 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024049 }
24050
24051 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
24052 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
24053 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24054 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24055 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24056 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24057 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24058 WDI_MAC_ADDR_LEN );
24059 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24060 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24061 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24062 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24063 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24064 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24065 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024066
Jeff Johnson295189b2012-06-20 16:38:30 -070024067 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24068}
24069
24070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024071 @brief NV blob will be divided into fragments of size 4kb and
24072 Sent to HAL
24073
24074 @param pWDICtx: pointer to the WLAN DAL context
24075 pEventData: pointer to the event information structure
24076
Jeff Johnson295189b2012-06-20 16:38:30 -070024077 @see
24078 @return Result of the function call
24079 */
24080
24081WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024082(
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 WDI_ControlBlockType* pWDICtx,
24084 WDI_EventInfoType* pEventData
24085)
24086{
24087
24088 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24089 wpt_uint8* pSendBuffer = NULL;
24090 wpt_uint16 usDataOffset = 0;
24091 wpt_uint16 usSendSize = 0;
24092 wpt_uint16 usCurrentFragmentSize =0;
24093 wpt_uint8* pSrcBuffer = NULL;
24094 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24095 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24096
24097 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24098 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24099 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24100
Jeff Johnsone7245742012-09-05 17:12:55 -070024101 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24103
24104 /* Update the current Fragment Number */
24105 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24106
24107 /*Update the HAL REQ structure */
24108 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24109 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24110 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24111
24112 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024113 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 image will be sent to HAL*/
24115
Jeff Johnsone7245742012-09-05 17:12:55 -070024116 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024117 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024118 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024120 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024121 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24122 usCurrentFragmentSize = FRAGMENT_SIZE;
24123
24124 /*Update the HAL REQ structure */
24125 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24126 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24127
24128 }
24129 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024130 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024131 usCurrentFragmentSize = FRAGMENT_SIZE;
24132
24133 /*Update the HAL REQ structure */
24134 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24135 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24136 }
24137
24138 /*-----------------------------------------------------------------------
24139 Get message buffer
24140 -----------------------------------------------------------------------*/
24141 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24142 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24143 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024144 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024145 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24146 {
24147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024148 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 pEventData, pwdiNvDownloadReqParams);
24150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024152 }
24153
24154 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024155 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024156 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24157
24158 /* Appending the NV image fragment */
24159 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24160 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24161 usCurrentFragmentSize);
24162
24163 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024164 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024165
Jeff Johnsone7245742012-09-05 17:12:55 -070024166 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24167 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024168 WDI_NV_DOWNLOAD_RESP);
24169
24170}
Jeff Johnsone7245742012-09-05 17:12:55 -070024171/*============================================================================
24172 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 ============================================================================*/
24174/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024175 @brief Helper routine used to find a session based on the BSSID
24176 @param pContext: pointer to the WLAN DAL context
24177 @param pDPContext: pointer to the Datapath context
24178
Jeff Johnson295189b2012-06-20 16:38:30 -070024179 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024180 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024181*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024182WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024183WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24184{
24185 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24186
24187 pCB->pDPContext = pDPContext;
24188 return;
24189}
24190
24191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024192 @brief Helper routine used to find a session based on the BSSID
24193
24194
24195 @param pContext: pointer to the WLAN DAL context
24196
Jeff Johnson295189b2012-06-20 16:38:30 -070024197 @see
24198 @return pointer to Datapath context
24199*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024200WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024201WDI_DS_GetDatapathContext (void *pContext)
24202{
24203 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24204 return pCB->pDPContext;
24205}
24206/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024207 @brief Helper routine used to find a session based on the BSSID
24208
24209
24210 @param pContext: pointer to the WLAN DAL context
24211 @param pDTDriverContext: pointer to the Transport Driver context
24212
Jeff Johnson295189b2012-06-20 16:38:30 -070024213 @see
24214 @return void
24215*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024216WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024217WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24218{
24219 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24220
24221 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024222 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024223}
24224
24225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024226 @brief Helper routine used to find a session based on the BSSID
24227
24228
24229 @param pWDICtx: pointer to the WLAN DAL context
24230
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024232 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070024233*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024234WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024235WDT_GetTransportDriverContext (void *pContext)
24236{
24237 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024238 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070024239}
24240
Jeff Johnsone7245742012-09-05 17:12:55 -070024241/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 Helper inline converters
24243 ============================================================================*/
24244/*Convert WDI driver type into HAL driver type*/
24245WPT_STATIC WPT_INLINE WDI_Status
24246WDI_HAL_2_WDI_STATUS
24247(
24248 eHalStatus halStatus
24249)
24250{
Jeff Johnsone7245742012-09-05 17:12:55 -070024251 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 the chances of getting inlined*/
24253 switch( halStatus )
24254 {
24255 case eHAL_STATUS_SUCCESS:
24256 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24257 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24258 return WDI_STATUS_SUCCESS;
24259 case eHAL_STATUS_FAILURE:
24260 return WDI_STATUS_E_FAILURE;
24261 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 return WDI_STATUS_MEM_FAILURE;
24263 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070024264 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024265 default:
24266 return WDI_STATUS_DEV_INTERNAL_FAILURE;
24267 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024268
Jeff Johnsone7245742012-09-05 17:12:55 -070024269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024270}/*WDI_HAL_2_WDI_STATUS*/
24271
24272/*Convert WDI request type into HAL request type*/
24273WPT_STATIC WPT_INLINE tHalHostMsgType
24274WDI_2_HAL_REQ_TYPE
24275(
24276 WDI_RequestEnumType wdiReqType
24277)
24278{
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 the chances of getting inlined*/
24281 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070024282 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024283 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024284 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024285 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024288 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024290 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024291 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024292 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024293 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024294 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024295 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024296 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024297 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024298 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024299 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024300 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024301 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024302 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024303 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024304 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024305 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024307 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024308 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024309 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024314 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024315 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024316 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 return WLAN_HAL_RMV_STAKEY_REQ;
24318 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024321 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024323 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024324 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024325 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024326 case WDI_DEL_BA_REQ:
24327 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024328#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 case WDI_TSM_STATS_REQ:
24330 return WLAN_HAL_TSM_STATS_REQ;
24331#endif
24332 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024336 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024337 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024339 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024341 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024342 case WDI_ADD_BA_SESSION_REQ:
24343 return WLAN_HAL_ADD_BA_SESSION_REQ;
24344 case WDI_TRIGGER_BA_REQ:
24345 return WLAN_HAL_TRIGGER_BA_REQ;
24346 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024349 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024350 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24351 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24352 case WDI_SET_MAX_TX_POWER_REQ:
24353 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024354 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24355 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024356 case WDI_SET_TX_POWER_REQ:
24357 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024358 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24359 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024360#ifdef FEATURE_WLAN_TDLS
24361 case WDI_TDLS_LINK_ESTABLISH_REQ:
24362 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024363 case WDI_TDLS_CHAN_SWITCH_REQ:
24364 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024365#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024367 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024369 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024370 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024371 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024375 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024376 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024377 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024379 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024380 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024381 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024382 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024383 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024385 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 case WDI_REM_BEACON_FILTER_REQ:
24387 return WLAN_HAL_REM_BCN_FILTER_REQ;
24388 case WDI_SET_RSSI_THRESHOLDS_REQ:
24389 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24390 case WDI_HOST_OFFLOAD_REQ:
24391 return WLAN_HAL_HOST_OFFLOAD_REQ;
24392 case WDI_WOWL_ADD_BC_PTRN_REQ:
24393 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24394 case WDI_WOWL_DEL_BC_PTRN_REQ:
24395 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24396 case WDI_WOWL_ENTER_REQ:
24397 return WLAN_HAL_ENTER_WOWL_REQ;
24398 case WDI_WOWL_EXIT_REQ:
24399 return WLAN_HAL_EXIT_WOWL_REQ;
24400 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24401 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24402 case WDI_NV_DOWNLOAD_REQ:
24403 return WLAN_HAL_DOWNLOAD_NV_REQ;
24404 case WDI_FLUSH_AC_REQ:
24405 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24406 case WDI_BTAMP_EVENT_REQ:
24407 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24408#ifdef WLAN_FEATURE_VOWIFI_11R
24409 case WDI_AGGR_ADD_TS_REQ:
24410 return WLAN_HAL_AGGR_ADD_TS_REQ;
24411#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 case WDI_FTM_CMD_REQ:
24413 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024414 case WDI_ADD_STA_SELF_REQ:
24415 return WLAN_HAL_ADD_STA_SELF_REQ;
24416 case WDI_DEL_STA_SELF_REQ:
24417 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024418#ifdef FEATURE_OEM_DATA_SUPPORT
24419 case WDI_START_OEM_DATA_REQ:
24420 return WLAN_HAL_START_OEM_DATA_REQ;
24421#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024422 case WDI_HOST_RESUME_REQ:
24423 return WLAN_HAL_HOST_RESUME_REQ;
24424 case WDI_HOST_SUSPEND_IND:
24425 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024426 case WDI_TRAFFIC_STATS_IND:
24427 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024428#ifdef WLAN_FEATURE_11W
24429 case WDI_EXCLUDE_UNENCRYPTED_IND:
24430 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24431#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024432 case WDI_KEEP_ALIVE_REQ:
24433 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024434#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024435 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24436 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024437#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024438#ifdef FEATURE_WLAN_SCAN_PNO
24439 case WDI_SET_PREF_NETWORK_REQ:
24440 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24441 case WDI_SET_RSSI_FILTER_REQ:
24442 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24443 case WDI_UPDATE_SCAN_PARAMS_REQ:
24444 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24445#endif // FEATURE_WLAN_SCAN_PNO
24446 case WDI_SET_TX_PER_TRACKING_REQ:
24447 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24448#ifdef WLAN_FEATURE_PACKET_FILTERING
24449 case WDI_8023_MULTICAST_LIST_REQ:
24450 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24451 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024452 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024453 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24454 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24455 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24456 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24457#endif // WLAN_FEATURE_PACKET_FILTERING
24458 case WDI_HAL_DUMP_CMD_REQ:
24459 return WLAN_HAL_DUMP_COMMAND_REQ;
24460#ifdef WLAN_FEATURE_GTK_OFFLOAD
24461 case WDI_GTK_OFFLOAD_REQ:
24462 return WLAN_HAL_GTK_OFFLOAD_REQ;
24463 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24464 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24465#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24466
24467 case WDI_INIT_SCAN_CON_REQ:
24468 return WLAN_HAL_INIT_SCAN_CON_REQ;
24469 case WDI_SET_POWER_PARAMS_REQ:
24470 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24471 case WDI_SET_TM_LEVEL_REQ:
24472 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24473 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24474 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024475#ifdef WLAN_FEATURE_11AC
24476 case WDI_UPDATE_VHT_OP_MODE_REQ:
24477 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24478#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024479 case WDI_GET_ROAM_RSSI_REQ:
24480 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024481 case WDI_DHCP_START_IND:
24482 return WLAN_HAL_DHCP_START_IND;
24483 case WDI_DHCP_STOP_IND:
24484 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024485#ifdef FEATURE_WLAN_LPHB
24486 case WDI_LPHB_CFG_REQ:
24487 return WLAN_HAL_LPHB_CFG_REQ;
24488#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024489 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24490 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24491 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24492 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24493
Rajeev79dbe4c2013-10-05 11:03:42 +053024494#ifdef FEATURE_WLAN_BATCH_SCAN
24495 case WDI_SET_BATCH_SCAN_REQ:
24496 return WLAN_HAL_BATCHSCAN_SET_REQ;
24497 case WDI_STOP_BATCH_SCAN_IND:
24498 return WLAN_HAL_BATCHSCAN_STOP_IND;
24499 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24500 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24501#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024502 case WDI_RATE_UPDATE_IND:
24503 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024504 case WDI_START_HT40_OBSS_SCAN_IND:
24505 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24506 case WDI_STOP_HT40_OBSS_SCAN_IND:
24507 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024508 case WDI_UPDATE_CHAN_REQ:
24509 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024510 case WDI_CH_SWITCH_REQ_V1:
24511 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024512 case WDI_GET_BCN_MISS_RATE_REQ:
24513 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024514
24515#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24516 case WDI_LL_STATS_SET_REQ:
24517 return WLAN_HAL_LL_SET_STATS_REQ;
24518 case WDI_LL_STATS_GET_REQ:
24519 return WLAN_HAL_LL_GET_STATS_REQ;
24520 case WDI_LL_STATS_CLEAR_REQ:
24521 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24522#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024523#ifdef WLAN_FEATURE_EXTSCAN
24524 case WDI_EXTSCAN_START_REQ:
24525 return WLAN_HAL_EXT_SCAN_START_REQ;
24526 case WDI_EXTSCAN_STOP_REQ:
24527 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24528 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24529 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24530 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24531 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24532 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24533 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24534 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24535 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024536 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24537 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24538 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24539 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053024540 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
24541 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053024542#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024543 case WDI_SPOOF_MAC_ADDR_REQ:
24544 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024545 case WDI_GET_FW_STATS_REQ:
24546 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024547 case WDI_ENCRYPT_MSG_REQ:
24548 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024549 case WDI_FW_LOGGING_INIT_REQ:
24550 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024551 case WDI_GET_FRAME_LOG_REQ:
24552 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024553 case WDI_NAN_REQUEST:
24554 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024555 case WDI_SET_RTS_CTS_HTVHT_IND:
24556 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024557 case WDI_MON_START_REQ:
24558 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24559 case WDI_MON_STOP_REQ:
24560 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024561 case WDI_FW_LOGGING_DXE_DONE_IND:
24562 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024563 case WDI_FATAL_EVENT_LOGGING_REQ:
24564 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024565 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24566 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053024567 case WDI_FWR_MEM_DUMP_REQ:
24568 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024569 case WDI_START_RSSI_MONITOR_REQ:
24570 return WLAN_HAL_START_RSSI_MONITORING_REQ;
24571 case WDI_STOP_RSSI_MONITOR_REQ:
24572 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024573 case WDI_WIFI_CONFIG_SET_REQ:
24574 return WLAN_HAL_WIFI_CONFIG_SET_PARAMS_REQ;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024575 case WDI_START_OEM_DATA_REQ_IND_NEW:
24576 return WLAN_HAL_START_OEM_DATA_REQ_IND_NEW;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053024577 case WDI_ANTENNA_DIVERSITY_SELECTION_REQ:
24578 return WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024580 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024581 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024582
Jeff Johnson295189b2012-06-20 16:38:30 -070024583}/*WDI_2_HAL_REQ_TYPE*/
24584
24585/*Convert WDI response type into HAL response type*/
24586WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24587HAL_2_WDI_RSP_TYPE
24588(
24589 tHalHostMsgType halMsg
24590)
24591{
Jeff Johnsone7245742012-09-05 17:12:55 -070024592 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024593 the chances of getting inlined*/
24594 switch( halMsg )
24595 {
24596 case WLAN_HAL_START_RSP:
24597 return WDI_START_RESP;
24598 case WLAN_HAL_STOP_RSP:
24599 return WDI_STOP_RESP;
24600 case WLAN_HAL_INIT_SCAN_RSP:
24601 return WDI_INIT_SCAN_RESP;
24602 case WLAN_HAL_START_SCAN_RSP:
24603 return WDI_START_SCAN_RESP;
24604 case WLAN_HAL_END_SCAN_RSP:
24605 return WDI_END_SCAN_RESP;
24606 case WLAN_HAL_FINISH_SCAN_RSP:
24607 return WDI_FINISH_SCAN_RESP;
24608 case WLAN_HAL_CONFIG_STA_RSP:
24609 return WDI_CONFIG_STA_RESP;
24610 case WLAN_HAL_DELETE_STA_RSP:
24611 return WDI_DEL_STA_RESP;
24612 case WLAN_HAL_CONFIG_BSS_RSP:
24613 return WDI_CONFIG_BSS_RESP;
24614 case WLAN_HAL_DELETE_BSS_RSP:
24615 return WDI_DEL_BSS_RESP;
24616 case WLAN_HAL_JOIN_RSP:
24617 return WDI_JOIN_RESP;
24618 case WLAN_HAL_POST_ASSOC_RSP:
24619 return WDI_POST_ASSOC_RESP;
24620 case WLAN_HAL_SET_BSSKEY_RSP:
24621 return WDI_SET_BSS_KEY_RESP;
24622 case WLAN_HAL_SET_STAKEY_RSP:
24623 return WDI_SET_STA_KEY_RESP;
24624 case WLAN_HAL_RMV_BSSKEY_RSP:
24625 return WDI_RMV_BSS_KEY_RESP;
24626 case WLAN_HAL_RMV_STAKEY_RSP:
24627 return WDI_RMV_STA_KEY_RESP;
24628 case WLAN_HAL_SET_BCASTKEY_RSP:
24629 return WDI_SET_STA_BCAST_KEY_RESP;
24630 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24631 // return WDI_RMV_STA_BCAST_KEY_RESP;
24632 case WLAN_HAL_ADD_TS_RSP:
24633 return WDI_ADD_TS_RESP;
24634 case WLAN_HAL_DEL_TS_RSP:
24635 return WDI_DEL_TS_RESP;
24636 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24637 return WDI_UPD_EDCA_PRMS_RESP;
24638 case WLAN_HAL_ADD_BA_RSP:
24639 return WDI_ADD_BA_RESP;
24640 case WLAN_HAL_DEL_BA_RSP:
24641 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024642#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024643 case WLAN_HAL_TSM_STATS_RSP:
24644 return WDI_TSM_STATS_RESP;
24645#endif
24646 case WLAN_HAL_CH_SWITCH_RSP:
24647 return WDI_CH_SWITCH_RESP;
24648 case WLAN_HAL_SET_LINK_ST_RSP:
24649 return WDI_SET_LINK_ST_RESP;
24650 case WLAN_HAL_GET_STATS_RSP:
24651 return WDI_GET_STATS_RESP;
24652 case WLAN_HAL_UPDATE_CFG_RSP:
24653 return WDI_UPDATE_CFG_RESP;
24654 case WLAN_HAL_ADD_BA_SESSION_RSP:
24655 return WDI_ADD_BA_SESSION_RESP;
24656 case WLAN_HAL_TRIGGER_BA_RSP:
24657 return WDI_TRIGGER_BA_RESP;
24658 case WLAN_HAL_UPDATE_BEACON_RSP:
24659 return WDI_UPD_BCON_PRMS_RESP;
24660 case WLAN_HAL_SEND_BEACON_RSP:
24661 return WDI_SND_BCON_RESP;
24662 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24663 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24664 /*Indications*/
24665 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24666 return WDI_HAL_RSSI_NOTIFICATION_IND;
24667 case WLAN_HAL_MISSED_BEACON_IND:
24668 return WDI_HAL_MISSED_BEACON_IND;
24669 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24670 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24671 case WLAN_HAL_MIC_FAILURE_IND:
24672 return WDI_HAL_MIC_FAILURE_IND;
24673 case WLAN_HAL_FATAL_ERROR_IND:
24674 return WDI_HAL_FATAL_ERROR_IND;
24675 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24676 return WDI_HAL_DEL_STA_IND;
24677 case WLAN_HAL_COEX_IND:
24678 return WDI_HAL_COEX_IND;
24679 case WLAN_HAL_OTA_TX_COMPL_IND:
24680 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024681 case WLAN_HAL_P2P_NOA_ATTR_IND:
24682 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024683 case WLAN_HAL_P2P_NOA_START_IND:
24684 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024685 case WLAN_HAL_DEL_BA_IND:
24686 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024687 case WLAN_HAL_TX_PER_HIT_IND:
24688 return WDI_HAL_TX_PER_HIT_IND;
24689 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24690 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024691 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24692 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024693 case WLAN_HAL_SET_TX_POWER_RSP:
24694 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024695 case WLAN_HAL_SET_P2P_GONOA_RSP:
24696 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024697#ifdef FEATURE_WLAN_TDLS
24698 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24699 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024700 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24701 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024702 case WLAN_HAL_TDLS_IND:
24703 return WDI_HAL_TDLS_IND;
24704#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024706 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024707 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024708 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024709 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024710 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024711 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024712 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024714 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024715 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024716 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024717 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024718 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024719 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024720 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024721 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024722 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024723 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24724 return WDI_SET_BEACON_FILTER_RESP;
24725 case WLAN_HAL_REM_BCN_FILTER_RSP:
24726 return WDI_REM_BEACON_FILTER_RESP;
24727 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24728 return WDI_SET_RSSI_THRESHOLDS_RESP;
24729 case WLAN_HAL_HOST_OFFLOAD_RSP:
24730 return WDI_HOST_OFFLOAD_RESP;
24731 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24732 return WDI_WOWL_ADD_BC_PTRN_RESP;
24733 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24734 return WDI_WOWL_DEL_BC_PTRN_RESP;
24735 case WLAN_HAL_ENTER_WOWL_RSP:
24736 return WDI_WOWL_ENTER_RESP;
24737 case WLAN_HAL_EXIT_WOWL_RSP:
24738 return WDI_WOWL_EXIT_RESP;
24739 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24740 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24741 case WLAN_HAL_DOWNLOAD_NV_RSP:
24742 return WDI_NV_DOWNLOAD_RESP;
24743 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24744 return WDI_FLUSH_AC_RESP;
24745 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24746 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024747 case WLAN_HAL_PROCESS_PTT_RSP:
24748 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024749 case WLAN_HAL_ADD_STA_SELF_RSP:
24750 return WDI_ADD_STA_SELF_RESP;
24751case WLAN_HAL_DEL_STA_SELF_RSP:
24752 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024753#ifdef FEATURE_OEM_DATA_SUPPORT
24754 case WLAN_HAL_START_OEM_DATA_RSP:
24755 return WDI_START_OEM_DATA_RESP;
24756#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024757 case WLAN_HAL_HOST_RESUME_RSP:
24758 return WDI_HOST_RESUME_RESP;
24759 case WLAN_HAL_KEEP_ALIVE_RSP:
24760 return WDI_KEEP_ALIVE_RESP;
24761#ifdef FEATURE_WLAN_SCAN_PNO
24762 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24763 return WDI_SET_PREF_NETWORK_RESP;
24764 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024765 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024766 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24767 return WDI_UPDATE_SCAN_PARAMS_RESP;
24768 case WLAN_HAL_PREF_NETW_FOUND_IND:
24769 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24770#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024771#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024772 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24773 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024774#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024775 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24776 return WDI_SET_TX_PER_TRACKING_RESP;
24777#ifdef WLAN_FEATURE_PACKET_FILTERING
24778 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24779 return WDI_8023_MULTICAST_LIST_RESP;
24780 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24781 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24782 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24783 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24784 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24785 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24786#endif // WLAN_FEATURE_PACKET_FILTERING
24787
24788 case WLAN_HAL_DUMP_COMMAND_RSP:
24789 return WDI_HAL_DUMP_CMD_RESP;
24790 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24791 return WDI_SET_POWER_PARAMS_RESP;
24792#ifdef WLAN_FEATURE_VOWIFI_11R
24793 case WLAN_HAL_AGGR_ADD_TS_RSP:
24794 return WDI_AGGR_ADD_TS_RESP;
24795#endif
24796
24797#ifdef WLAN_FEATURE_GTK_OFFLOAD
24798 case WLAN_HAL_GTK_OFFLOAD_RSP:
24799 return WDI_GTK_OFFLOAD_RESP;
24800 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24801 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24802#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24803#ifdef WLAN_WAKEUP_EVENTS
24804 case WLAN_HAL_WAKE_REASON_IND:
24805 return WDI_HAL_WAKE_REASON_IND;
24806#endif // WLAN_WAKEUP_EVENTS
24807
24808 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24809 return WDI_SET_TM_LEVEL_RESP;
24810 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24811 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024812#ifdef WLAN_FEATURE_11AC
24813 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24814 return WDI_UPDATE_VHT_OP_MODE_RESP;
24815#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024816#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024817 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24818 return WDI_GET_ROAM_RSSI_RESP;
24819#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024820
Leo Chang9056f462013-08-01 19:21:11 -070024821#ifdef FEATURE_WLAN_LPHB
24822 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024823 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024824 case WLAN_HAL_LPHB_CFG_RSP:
24825 return WDI_LPHB_CFG_RESP;
24826#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024827
24828 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24829 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024830 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24831 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024832
Rajeev79dbe4c2013-10-05 11:03:42 +053024833#ifdef FEATURE_WLAN_BATCH_SCAN
24834 case WLAN_HAL_BATCHSCAN_SET_RSP:
24835 return WDI_SET_BATCH_SCAN_RESP;
24836 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24837 return WDI_BATCHSCAN_RESULT_IND;
24838#endif // FEATURE_WLAN_BATCH_SCAN
24839
Leo Chang0b0e45a2013-12-15 15:18:55 -080024840#ifdef FEATURE_WLAN_CH_AVOID
24841 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24842 return WDI_HAL_CH_AVOID_IND;
24843#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024844 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24845 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024846 case WLAN_HAL_PRINT_REG_INFO_IND:
24847 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024848 case WLAN_HAL_CH_SWITCH_V1_RSP:
24849 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024850 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24851 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024852#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24853 case WLAN_HAL_LL_SET_STATS_RSP:
24854 return WDI_LL_STATS_SET_RSP;
24855 case WLAN_HAL_LL_GET_STATS_RSP:
24856 return WDI_LL_STATS_GET_RSP;
24857 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24858 return WDI_LL_STATS_CLEAR_RSP;
24859 case WLAN_HAL_LL_NOTIFY_STATS:
24860 return WDI_HAL_LL_STATS_RESULTS_IND;
24861#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024862#ifdef WLAN_FEATURE_EXTSCAN
24863 case WLAN_HAL_EXT_SCAN_START_RSP:
24864 return WDI_EXTSCAN_START_RSP;
24865 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24866 return WDI_EXTSCAN_STOP_RSP;
24867 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24868 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24869 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24870 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24871 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24872 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24873 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24874 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024875 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
24876 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
24877 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
24878 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053024879 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24880 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24881 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24882 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24883 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24884 return WDI_HAL_EXTSCAN_RESULT_IND;
24885 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24886 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024887 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
24888 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053024889#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024890 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24891 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024892 case WLAN_HAL_FW_STATS_RSP:
24893 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024894 case WLAN_HAL_ENCRYPT_DATA_RSP:
24895 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024896 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24897 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024898 case WLAN_HAL_GET_FRAME_LOG_RSP:
24899 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024900 case WLAN_HAL_NAN_RSP:
24901 return WDI_NAN_RESPONSE;
24902 case WLAN_HAL_NAN_EVT:
24903 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024904 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24905 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024906 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24907 return WDI_MON_START_RSP;
24908 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24909 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024910 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24911 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053024912 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
24913 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024914 case WLAN_HAL_START_RSSI_MONITORING_RSP:
24915 return WDI_START_RSSI_MONITOR_RSP;
24916 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
24917 return WDI_STOP_RSSI_MONITOR_RSP;
24918 case WLAN_HAL_RSSI_MONITORING_IND:
24919 return WDI_HAL_RSSI_BREACHED_IND;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024920 case WLAN_HAL_WIFI_CONFIG_SET_PARAMS_RSP:
24921 return WDI_WIFI_CONFIG_SET_RSP;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024922#ifdef FEATURE_OEM_DATA_SUPPORT
24923 case WLAN_HAL_START_OEM_DATA_RSP_IND_NEW:
24924 return WDI_HAL_START_OEM_DATA_RSP_IND_NEW;
24925#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053024926 case WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_RSP:
24927 return WDI_ANTENNA_DIVERSITY_SELECTION_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024928 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024929 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024930 }
24931
24932}/*HAL_2_WDI_RSP_TYPE*/
24933
24934
24935/*Convert WDI driver type into HAL driver type*/
24936WPT_STATIC WPT_INLINE tDriverType
24937WDI_2_HAL_DRV_TYPE
24938(
24939 WDI_DriverType wdiDriverType
24940)
24941{
Jeff Johnsone7245742012-09-05 17:12:55 -070024942 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024943 the chances of getting inlined*/
24944 switch( wdiDriverType )
24945 {
24946 case WDI_DRIVER_TYPE_PRODUCTION:
24947 return eDRIVER_TYPE_PRODUCTION;
24948 case WDI_DRIVER_TYPE_MFG:
24949 return eDRIVER_TYPE_MFG;
24950 case WDI_DRIVER_TYPE_DVT:
24951 return eDRIVER_TYPE_DVT;
24952 }
24953
Jeff Johnsone7245742012-09-05 17:12:55 -070024954 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024955}/*WDI_2_HAL_DRV_TYPE*/
24956
24957
24958/*Convert WDI stop reason into HAL stop reason*/
24959WPT_STATIC WPT_INLINE tHalStopType
24960WDI_2_HAL_STOP_REASON
24961(
24962 WDI_StopType wdiDriverType
24963)
24964{
Jeff Johnsone7245742012-09-05 17:12:55 -070024965 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024966 the chances of getting inlined*/
24967 switch( wdiDriverType )
24968 {
24969 case WDI_STOP_TYPE_SYS_RESET:
24970 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024971 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24972 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024973 case WDI_STOP_TYPE_RF_KILL:
24974 return HAL_STOP_TYPE_RF_KILL;
24975 }
24976
Jeff Johnsone7245742012-09-05 17:12:55 -070024977 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024978}/*WDI_2_HAL_STOP_REASON*/
24979
24980
24981/*Convert WDI scan mode type into HAL scan mode type*/
24982WPT_STATIC WPT_INLINE eHalSysMode
24983WDI_2_HAL_SCAN_MODE
24984(
24985 WDI_ScanMode wdiScanMode
24986)
24987{
Jeff Johnsone7245742012-09-05 17:12:55 -070024988 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024989 the chances of getting inlined*/
24990 switch( wdiScanMode )
24991 {
24992 case WDI_SCAN_MODE_NORMAL:
24993 return eHAL_SYS_MODE_NORMAL;
24994 case WDI_SCAN_MODE_LEARN:
24995 return eHAL_SYS_MODE_LEARN;
24996 case WDI_SCAN_MODE_SCAN:
24997 return eHAL_SYS_MODE_SCAN;
24998 case WDI_SCAN_MODE_PROMISC:
24999 return eHAL_SYS_MODE_PROMISC;
25000 case WDI_SCAN_MODE_SUSPEND_LINK:
25001 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070025002 case WDI_SCAN_MODE_ROAM_SCAN:
25003 return eHAL_SYS_MODE_ROAM_SCAN;
25004 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
25005 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070025006 }
25007
Jeff Johnsone7245742012-09-05 17:12:55 -070025008 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025009}/*WDI_2_HAL_SCAN_MODE*/
25010
25011/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025012WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070025013WDI_2_HAL_SEC_CH_OFFSET
25014(
25015 WDI_HTSecondaryChannelOffset wdiSecChOffset
25016)
25017{
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 the chances of getting inlined*/
25020 switch( wdiSecChOffset )
25021 {
25022 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025023 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025024 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025025 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070025026 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070025027 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
25028#ifdef WLAN_FEATURE_11AC
25029 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25030 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25031 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25032 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25033 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25034 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25035 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25036 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25037 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25038 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25039 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25040 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25041 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25042 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25043#endif
25044 default:
25045 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025046 }
25047
Jeff Johnsone7245742012-09-05 17:12:55 -070025048 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025049}/*WDI_2_HAL_SEC_CH_OFFSET*/
25050
25051/*Convert WDI BSS type into HAL BSS type*/
25052WPT_STATIC WPT_INLINE tSirBssType
25053WDI_2_HAL_BSS_TYPE
25054(
25055 WDI_BssType wdiBSSType
25056)
25057{
Jeff Johnsone7245742012-09-05 17:12:55 -070025058 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025059 the chances of getting inlined*/
25060 switch( wdiBSSType )
25061 {
25062 case WDI_INFRASTRUCTURE_MODE:
25063 return eSIR_INFRASTRUCTURE_MODE;
25064 case WDI_INFRA_AP_MODE:
25065 return eSIR_INFRA_AP_MODE;
25066 case WDI_IBSS_MODE:
25067 return eSIR_IBSS_MODE;
25068 case WDI_BTAMP_STA_MODE:
25069 return eSIR_BTAMP_STA_MODE;
25070 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025071 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025072 case WDI_BSS_AUTO_MODE:
25073 return eSIR_AUTO_MODE;
25074 }
25075
Jeff Johnsone7245742012-09-05 17:12:55 -070025076 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025077}/*WDI_2_HAL_BSS_TYPE*/
25078
25079/*Convert WDI NW type into HAL NW type*/
25080WPT_STATIC WPT_INLINE tSirNwType
25081WDI_2_HAL_NW_TYPE
25082(
25083 WDI_NwType wdiNWType
25084)
25085{
Jeff Johnsone7245742012-09-05 17:12:55 -070025086 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025087 the chances of getting inlined*/
25088 switch( wdiNWType )
25089 {
25090 case WDI_11A_NW_TYPE:
25091 return eSIR_11A_NW_TYPE;
25092 case WDI_11B_NW_TYPE:
25093 return eSIR_11B_NW_TYPE;
25094 case WDI_11G_NW_TYPE:
25095 return eSIR_11G_NW_TYPE;
25096 case WDI_11N_NW_TYPE:
25097 return eSIR_11N_NW_TYPE;
25098 }
25099
Jeff Johnsone7245742012-09-05 17:12:55 -070025100 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025101}/*WDI_2_HAL_NW_TYPE*/
25102
25103/*Convert WDI chanel bonding type into HAL cb type*/
25104WPT_STATIC WPT_INLINE ePhyChanBondState
25105WDI_2_HAL_CB_STATE
25106(
25107 WDI_PhyChanBondState wdiCbState
25108)
25109{
Jeff Johnsone7245742012-09-05 17:12:55 -070025110 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025111 the chances of getting inlined*/
25112 switch ( wdiCbState )
25113 {
25114 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25115 return PHY_SINGLE_CHANNEL_CENTERED;
25116 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25117 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25118 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25119 return PHY_DOUBLE_CHANNEL_CENTERED;
25120 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25121 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025122#ifdef WLAN_FEATURE_11AC
25123 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25124 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25125 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25126 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25127 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25128 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25129 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25130 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25131 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25132 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25133 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25134 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25135 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25136 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25137#endif
25138 case WDI_MAX_CB_STATE:
25139 default:
25140 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025142
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 return PHY_CHANNEL_BONDING_STATE_MAX;
25144}/*WDI_2_HAL_CB_STATE*/
25145
25146/*Convert WDI chanel bonding type into HAL cb type*/
25147WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
25148WDI_2_HAL_HT_OPER_MODE
25149(
25150 WDI_HTOperatingMode wdiHTOperMode
25151)
25152{
Jeff Johnsone7245742012-09-05 17:12:55 -070025153 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025154 the chances of getting inlined*/
25155 switch ( wdiHTOperMode )
25156 {
25157 case WDI_HT_OP_MODE_PURE:
25158 return eSIR_HT_OP_MODE_PURE;
25159 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
25160 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
25161 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
25162 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
25163 case WDI_HT_OP_MODE_MIXED:
25164 return eSIR_HT_OP_MODE_MIXED;
25165 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025166
Jeff Johnson295189b2012-06-20 16:38:30 -070025167 return eSIR_HT_OP_MODE_MAX;
25168}/*WDI_2_HAL_HT_OPER_MODE*/
25169
25170/*Convert WDI mimo PS type into HAL mimo PS type*/
25171WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
25172WDI_2_HAL_MIMO_PS
25173(
25174 WDI_HTMIMOPowerSaveState wdiHTOperMode
25175)
25176{
Jeff Johnsone7245742012-09-05 17:12:55 -070025177 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 the chances of getting inlined*/
25179 switch ( wdiHTOperMode )
25180 {
25181 case WDI_HT_MIMO_PS_STATIC:
25182 return eSIR_HT_MIMO_PS_STATIC;
25183 case WDI_HT_MIMO_PS_DYNAMIC:
25184 return eSIR_HT_MIMO_PS_DYNAMIC;
25185 case WDI_HT_MIMO_PS_NA:
25186 return eSIR_HT_MIMO_PS_NA;
25187 case WDI_HT_MIMO_PS_NO_LIMIT:
25188 return eSIR_HT_MIMO_PS_NO_LIMIT;
25189 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025190
Jeff Johnson295189b2012-06-20 16:38:30 -070025191 return eSIR_HT_MIMO_PS_MAX;
25192}/*WDI_2_HAL_MIMO_PS*/
25193
25194/*Convert WDI ENC type into HAL ENC type*/
25195WPT_STATIC WPT_INLINE tAniEdType
25196WDI_2_HAL_ENC_TYPE
25197(
25198 WDI_EncryptType wdiEncType
25199)
25200{
Jeff Johnsone7245742012-09-05 17:12:55 -070025201 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025202 the chances of getting inlined*/
25203 switch ( wdiEncType )
25204 {
25205 case WDI_ENCR_NONE:
25206 return eSIR_ED_NONE;
25207
25208 case WDI_ENCR_WEP40:
25209 return eSIR_ED_WEP40;
25210
25211 case WDI_ENCR_WEP104:
25212 return eSIR_ED_WEP104;
25213
25214 case WDI_ENCR_TKIP:
25215 return eSIR_ED_TKIP;
25216
25217 case WDI_ENCR_CCMP:
25218 return eSIR_ED_CCMP;
25219
25220 case WDI_ENCR_AES_128_CMAC:
25221 return eSIR_ED_AES_128_CMAC;
25222#if defined(FEATURE_WLAN_WAPI)
25223 case WDI_ENCR_WPI:
25224 return eSIR_ED_WPI;
25225#endif
25226 default:
25227 return eSIR_ED_NOT_IMPLEMENTED;
25228 }
25229
25230}/*WDI_2_HAL_ENC_TYPE*/
25231
25232/*Convert WDI WEP type into HAL WEP type*/
25233WPT_STATIC WPT_INLINE tAniWepType
25234WDI_2_HAL_WEP_TYPE
25235(
25236 WDI_WepType wdiWEPType
25237)
25238{
Jeff Johnsone7245742012-09-05 17:12:55 -070025239 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025240 the chances of getting inlined*/
25241 switch ( wdiWEPType )
25242 {
25243 case WDI_WEP_STATIC:
25244 return eSIR_WEP_STATIC;
25245
25246 case WDI_WEP_DYNAMIC:
25247 return eSIR_WEP_DYNAMIC;
25248 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025249
Jeff Johnson295189b2012-06-20 16:38:30 -070025250 return eSIR_WEP_MAX;
25251}/*WDI_2_HAL_WEP_TYPE*/
25252
25253WPT_STATIC WPT_INLINE tSirLinkState
25254WDI_2_HAL_LINK_STATE
25255(
25256 WDI_LinkStateType wdiLinkState
25257)
25258{
Jeff Johnsone7245742012-09-05 17:12:55 -070025259 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025260 the chances of getting inlined*/
25261 switch ( wdiLinkState )
25262 {
25263 case WDI_LINK_IDLE_STATE:
25264 return eSIR_LINK_IDLE_STATE;
25265
25266 case WDI_LINK_PREASSOC_STATE:
25267 return eSIR_LINK_PREASSOC_STATE;
25268
25269 case WDI_LINK_POSTASSOC_STATE:
25270 return eSIR_LINK_POSTASSOC_STATE;
25271
25272 case WDI_LINK_AP_STATE:
25273 return eSIR_LINK_AP_STATE;
25274
25275 case WDI_LINK_IBSS_STATE:
25276 return eSIR_LINK_IBSS_STATE;
25277
25278 case WDI_LINK_BTAMP_PREASSOC_STATE:
25279 return eSIR_LINK_BTAMP_PREASSOC_STATE;
25280
25281 case WDI_LINK_BTAMP_POSTASSOC_STATE:
25282 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
25283
25284 case WDI_LINK_BTAMP_AP_STATE:
25285 return eSIR_LINK_BTAMP_AP_STATE;
25286
25287 case WDI_LINK_BTAMP_STA_STATE:
25288 return eSIR_LINK_BTAMP_STA_STATE;
25289
25290 case WDI_LINK_LEARN_STATE:
25291 return eSIR_LINK_LEARN_STATE;
25292
25293 case WDI_LINK_SCAN_STATE:
25294 return eSIR_LINK_SCAN_STATE;
25295
25296 case WDI_LINK_FINISH_SCAN_STATE:
25297 return eSIR_LINK_FINISH_SCAN_STATE;
25298
25299 case WDI_LINK_INIT_CAL_STATE:
25300 return eSIR_LINK_INIT_CAL_STATE;
25301
25302 case WDI_LINK_FINISH_CAL_STATE:
25303 return eSIR_LINK_FINISH_CAL_STATE;
25304
Jeff Johnson295189b2012-06-20 16:38:30 -070025305 case WDI_LINK_LISTEN_STATE:
25306 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025307
Gopichand Nakkala924e4552013-05-08 19:18:14 +053025308 case WDI_LINK_SEND_ACTION_STATE:
25309 return eSIR_LINK_SEND_ACTION_STATE;
25310
Jeff Johnson295189b2012-06-20 16:38:30 -070025311 default:
25312 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070025313 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025314}
25315
Jeff Johnsone7245742012-09-05 17:12:55 -070025316/*Translate a STA Context from WDI into HAL*/
25317WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025318void
25319WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025320(
Jeff Johnson295189b2012-06-20 16:38:30 -070025321 tConfigStaParams* phalConfigSta,
25322 WDI_ConfigStaReqInfoType* pwdiConfigSta
25323)
25324{
25325 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025326#ifdef WLAN_FEATURE_11AC
25327 /* Get the Version 1 Handler */
25328 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25329 if (WDI_getFwWlanFeatCaps(DOT11AC))
25330 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025331 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025332 }
25333#endif
25334 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025335 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025336
Jeff Johnsone7245742012-09-05 17:12:55 -070025337 wpalMemoryCopy(phalConfigSta->bssId,
25338 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25339
25340 wpalMemoryCopy(phalConfigSta->staMac,
25341 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025342
25343 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25344 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25345 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25346 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25347 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25348 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25349 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25350 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25351 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25352 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25353 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25354 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25355 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25356 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25357 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25358 phalConfigSta->action = pwdiConfigSta->wdiAction;
25359 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25360 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25361 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25362 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25363 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25364 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25365 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025366
Jeff Johnson295189b2012-06-20 16:38:30 -070025367 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25368
Jeff Johnsone7245742012-09-05 17:12:55 -070025369 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025370 pwdiConfigSta->wdiSupportedRates.opRateMode;
25371 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25372 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025373 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025374 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25375 }
25376 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25377 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025378 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025379 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25380 }
25381 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25382 {
25383 phalConfigSta->supportedRates.aniLegacyRates[i] =
25384 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25385 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025386 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025387 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25388 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25389 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025390 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025391 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25392 }
25393 phalConfigSta->supportedRates.rxHighestDataRate =
25394 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25395
Jeff Johnsone7245742012-09-05 17:12:55 -070025396#ifdef WLAN_FEATURE_11AC
25397 if(phalConfigSta_V1 != NULL)
25398 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025399 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25400 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25401 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25402 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025403 }
25404#endif
25405
Jeff Johnson295189b2012-06-20 16:38:30 -070025406 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025407
Jeff Johnsone7245742012-09-05 17:12:55 -070025408#ifdef WLAN_FEATURE_11AC
25409 if(phalConfigSta_V1 != NULL)
25410 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025411 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25412 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025413 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025414 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025415 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25416 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25417
Jeff Johnsone7245742012-09-05 17:12:55 -070025418 }
25419#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025420}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025421
25422/*Translate a Rate set info from WDI into HAL*/
25423WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025424WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025425(
Jeff Johnson295189b2012-06-20 16:38:30 -070025426 tSirMacRateSet* pHalRateSet,
25427 WDI_RateSet* pwdiRateSet
25428)
25429{
Jeff Johnsone7245742012-09-05 17:12:55 -070025430 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25432
25433 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25434 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25435
25436 for ( i = 0; i < pHalRateSet->numRates; i++ )
25437 {
25438 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25439 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025440
Jeff Johnson295189b2012-06-20 16:38:30 -070025441}/*WDI_CopyWDIRateSetToHALRateSet*/
25442
25443
25444/*Translate an EDCA Parameter Record from WDI into HAL*/
25445WPT_STATIC WPT_INLINE void
25446WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025447(
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 tSirMacEdcaParamRecord* phalEdcaParam,
25449 WDI_EdcaParamRecord* pWDIEdcaParam
25450)
25451{
Jeff Johnsone7245742012-09-05 17:12:55 -070025452 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025453 the chances of getting inlined*/
25454
25455 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25456 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25457 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25458 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25459
25460 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25461 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25462 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25463}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25464
25465
25466/*Copy a management frame header from WDI fmt into HAL fmt*/
25467WPT_STATIC WPT_INLINE void
25468WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25469(
25470 tSirMacMgmtHdr* pmacMgmtHdr,
25471 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25472)
25473{
25474 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25475 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25476 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25477 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25478 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25479 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25480 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25481 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25482 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25483 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25484 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25485
25486 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25487 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25488
Jeff Johnsone7245742012-09-05 17:12:55 -070025489 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025490 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025491 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025492 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025493 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 pwdiMacMgmtHdr->bssId, 6);
25495
25496 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25497 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25498 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25499
25500}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25501
25502
25503/*Copy config bss parameters from WDI fmt into HAL fmt*/
25504WPT_STATIC WPT_INLINE void
25505WDI_CopyWDIConfigBSSToHALConfigBSS
25506(
25507 tConfigBssParams* phalConfigBSS,
25508 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25509)
25510{
25511
25512 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025513#ifdef WLAN_FEATURE_11AC
25514 /* Get the Version 1 Handler */
25515 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25516 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025517 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025518#endif
25519
Jeff Johnson295189b2012-06-20 16:38:30 -070025520 wpalMemoryCopy( phalConfigBSS->bssId,
25521 pwdiConfigBSS->macBSSID,
25522 WDI_MAC_ADDR_LEN);
25523
25524#ifdef HAL_SELF_STA_PER_BSS
25525 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25526 pwdiConfigBSS->macSelfAddr,
25527 WDI_MAC_ADDR_LEN);
25528#endif
25529
25530 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25531
25532 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25533 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25534
Jeff Johnsone7245742012-09-05 17:12:55 -070025535 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025536 pwdiConfigBSS->ucShortSlotTimeSupported;
25537 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25538 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25539 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25540 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25541 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025542 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25544 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25545 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25546 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25547 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25548 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25549 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25550 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25551 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25552 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25553 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25554
Jeff Johnsone7245742012-09-05 17:12:55 -070025555 phalConfigBSS->htOperMode =
25556 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025557
25558 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25559 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25560 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25561 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25562
25563#ifdef WLAN_FEATURE_VOWIFI
25564 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25565#endif
25566
25567 /*! Used 32 as magic number because that is how the ssid is declared inside the
25568 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025569 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25571 pwdiConfigBSS->wdiSSID.ucLength : 32;
25572 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025573 pwdiConfigBSS->wdiSSID.sSSID,
25574 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025575
25576 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25577 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025578
Jeff Johnson295189b2012-06-20 16:38:30 -070025579 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25580 &pwdiConfigBSS->wdiRateSet);
25581
25582 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25583
25584 if(phalConfigBSS->edcaParamsValid)
25585 {
25586 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25587 &pwdiConfigBSS->wdiBEEDCAParams);
25588 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25589 &pwdiConfigBSS->wdiBKEDCAParams);
25590 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25591 &pwdiConfigBSS->wdiVIEDCAParams);
25592 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25593 &pwdiConfigBSS->wdiVOEDCAParams);
25594 }
25595
Jeff Johnsone7245742012-09-05 17:12:55 -070025596 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025597
25598 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25599
25600#ifdef WLAN_FEATURE_VOWIFI_11R
25601
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025603 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025604
Jeff Johnson295189b2012-06-20 16:38:30 -070025605 if( phalConfigBSS->extSetStaKeyParamValid )
25606 {
25607 /*-----------------------------------------------------------------------
25608 Copy the STA Key parameters into the HAL message
25609 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025610 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025611 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25612
Jeff Johnsone7245742012-09-05 17:12:55 -070025613 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025614 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25615
25616 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25617
25618 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25619
25620 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25621
Jeff Johnson295189b2012-06-20 16:38:30 -070025622 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25623 keyIndex++)
25624 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025625 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025626 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25627 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25628 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25629 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25630 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25631 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025632 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025634 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025636 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25638 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025640 WDI_MAX_KEY_LENGTH);
25641 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025642 }
25643 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25644 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025645 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025646 sizeof(phalConfigBSS->extSetStaKeyParam) );
25647 }
25648
25649#endif /*WLAN_FEATURE_VOWIFI_11R*/
25650
Jeff Johnsone7245742012-09-05 17:12:55 -070025651#ifdef WLAN_FEATURE_11AC
25652 if(phalConfigBSS_V1 != NULL)
25653 {
25654 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25655 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25656 }
25657#endif
25658
Jeff Johnson295189b2012-06-20 16:38:30 -070025659}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25660
25661
Jeff Johnsone7245742012-09-05 17:12:55 -070025662/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025663 pointed to by user data */
25664WPT_STATIC WPT_INLINE void
25665WDI_ExtractRequestCBFromEvent
25666(
25667 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025668 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025669 void** ppUserData
25670)
25671{
25672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25673 switch ( pEvent->wdiRequest )
25674 {
25675 case WDI_START_REQ:
25676 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25677 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25678 break;
25679 case WDI_STOP_REQ:
25680 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25681 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25682 break;
25683 case WDI_INIT_SCAN_REQ:
25684 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25685 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25686 break;
25687 case WDI_START_SCAN_REQ:
25688 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25689 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25690 break;
25691 case WDI_END_SCAN_REQ:
25692 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25693 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25694 break;
25695 case WDI_FINISH_SCAN_REQ:
25696 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25697 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25698 break;
25699 case WDI_JOIN_REQ:
25700 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25701 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25702 break;
25703 case WDI_CONFIG_BSS_REQ:
25704 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25705 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25706 break;
25707 case WDI_DEL_BSS_REQ:
25708 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25709 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25710 break;
25711 case WDI_POST_ASSOC_REQ:
25712 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25713 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25714 break;
25715 case WDI_DEL_STA_REQ:
25716 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25717 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25718 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025719
25720 case WDI_ADD_STA_SELF_REQ:
25721 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25722 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25723 break;
25724
Jeff Johnson295189b2012-06-20 16:38:30 -070025725 case WDI_DEL_STA_SELF_REQ:
25726 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25727 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25728 break;
25729
25730 case WDI_SET_BSS_KEY_REQ:
25731 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25732 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25733 break;
25734 case WDI_RMV_BSS_KEY_REQ:
25735 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25736 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25737 break;
25738 case WDI_SET_STA_KEY_REQ:
25739 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25740 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25741 break;
25742 case WDI_RMV_STA_KEY_REQ:
25743 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25744 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25745 break;
25746 case WDI_ADD_TS_REQ:
25747 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25748 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25749 break;
25750 case WDI_DEL_TS_REQ:
25751 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25752 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25753 break;
25754 case WDI_UPD_EDCA_PRMS_REQ:
25755 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25756 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25757 break;
25758 case WDI_ADD_BA_SESSION_REQ:
25759 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25760 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25761 break;
25762 case WDI_DEL_BA_REQ:
25763 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25764 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25765 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025766#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 case WDI_TSM_STATS_REQ:
25768 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25769 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25770 break;
25771#endif
25772 case WDI_CH_SWITCH_REQ:
25773 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25774 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25775 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025776 case WDI_CH_SWITCH_REQ_V1:
25777 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25778 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25779 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025780 case WDI_CONFIG_STA_REQ:
25781 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25782 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25783 break;
25784 case WDI_SET_LINK_ST_REQ:
25785 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25786 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25787 break;
25788 case WDI_GET_STATS_REQ:
25789 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25790 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25791 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025792#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025793 case WDI_GET_ROAM_RSSI_REQ:
25794 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25795 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25796 break;
25797#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025798 case WDI_UPDATE_CFG_REQ:
25799 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25800 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25801 break;
25802 case WDI_ADD_BA_REQ:
25803 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25804 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25805 break;
25806 case WDI_TRIGGER_BA_REQ:
25807 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25808 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25809 break;
25810 case WDI_UPD_BCON_PRMS_REQ:
25811 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25812 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25813 break;
25814 case WDI_SND_BCON_REQ:
25815 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25816 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25817 break;
25818 case WDI_ENTER_BMPS_REQ:
25819 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25820 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25821 break;
25822 case WDI_EXIT_BMPS_REQ:
25823 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25824 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25825 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025826 case WDI_ENTER_IMPS_REQ:
25827 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25828 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25829 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025830 case WDI_ENTER_UAPSD_REQ:
25831 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25832 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25833 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025834 case WDI_EXIT_UAPSD_REQ:
25835 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25836 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25837 break;
25838 case WDI_SET_UAPSD_PARAM_REQ:
25839 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25840 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25841 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025842 case WDI_UPDATE_UAPSD_PARAM_REQ:
25843 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25844 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25845 break;
25846 case WDI_CONFIGURE_RXP_FILTER_REQ:
25847 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25848 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25849 break;
25850 case WDI_SET_BEACON_FILTER_REQ:
25851 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25852 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25853 break;
25854 case WDI_REM_BEACON_FILTER_REQ:
25855 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25856 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025857 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025858 case WDI_SET_RSSI_THRESHOLDS_REQ:
25859 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25860 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25861 break;
25862 case WDI_HOST_OFFLOAD_REQ:
25863 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25864 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25865 break;
25866 case WDI_WOWL_ADD_BC_PTRN_REQ:
25867 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25868 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25869 break;
25870 case WDI_WOWL_DEL_BC_PTRN_REQ:
25871 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25872 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25873 break;
25874 case WDI_WOWL_ENTER_REQ:
25875 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25876 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25877 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025878 case WDI_WOWL_EXIT_REQ:
25879 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25880 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25881 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025882 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25883 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25884 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25885 break;
25886 case WDI_FLUSH_AC_REQ:
25887 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25888 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25889 break;
25890 case WDI_BTAMP_EVENT_REQ:
25891 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25892 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25893 break;
25894 case WDI_KEEP_ALIVE_REQ:
25895 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25896 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25897 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025898#if defined FEATURE_WLAN_SCAN_PNO
25899 case WDI_SET_PREF_NETWORK_REQ:
25900 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25901 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25902 break;
25903 case WDI_SET_RSSI_FILTER_REQ:
25904 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25905 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25906 break;
25907 case WDI_UPDATE_SCAN_PARAMS_REQ:
25908 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25909 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25910 break;
25911#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025912 case WDI_SET_TX_PER_TRACKING_REQ:
25913 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25914 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025915 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025916#if defined WLAN_FEATURE_PACKET_FILTERING
25917 case WDI_8023_MULTICAST_LIST_REQ:
25918 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25919 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25920 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025921 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25922 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25923 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25924 break;
25925 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25926 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25927 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25928 break;
25929 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25930 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25931 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25932 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025933#endif
25934 case WDI_SET_POWER_PARAMS_REQ:
25935 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25936 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25937 break;
25938#if defined WLAN_FEATURE_GTK_OFFLOAD
25939 case WDI_GTK_OFFLOAD_REQ:
25940 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25941 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25942 break;
25943 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25944 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25945 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25946 break;
25947#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025948
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 default:
25950 *ppfnReqCB = NULL;
25951 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025952 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 }
25954}/*WDI_ExtractRequestCBFromEvent*/
25955
25956
25957/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025958 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025959 frame xtl is enabled for a particular STA.
25960
25961 WDI_PostAssocReq must have been called.
25962
Jeff Johnsone7245742012-09-05 17:12:55 -070025963 @param uSTAIdx: STA index
25964
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 @see WDI_PostAssocReq
25966 @return Result of the function call
25967*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025968wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025969WDI_IsHwFrameTxTranslationCapable
25970(
25971 wpt_uint8 uSTAIdx
25972)
25973{
Jeff Johnsone7245742012-09-05 17:12:55 -070025974 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025975 uma value*/
25976 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025977 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025978 ------------------------------------------------------------------------*/
25979 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25980 {
25981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25982 "WDI API call before module is initialized - Fail request");
25983
Jeff Johnsone7245742012-09-05 17:12:55 -070025984 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025985 }
25986
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025987#ifdef WLAN_SOFTAP_VSTA_FEATURE
25988 if (IS_VSTA_IDX(uSTAIdx))
25989 {
25990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25991 "STA %d is a Virtual STA, "
25992 "HW frame translation disabled", uSTAIdx);
25993 return eWLAN_PAL_FALSE;
25994 }
25995#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025996
Jeff Johnson295189b2012-06-20 16:38:30 -070025997 return gWDICb.bFrameTransEnabled;
25998}/*WDI_IsHwFrameTxTranslationCapable*/
25999
Katya Nigam6201c3e2014-05-27 17:51:42 +053026000
26001/**
26002 @brief WDI_IsSelfSTA - check if staid is self sta index
26003
26004
26005 @param pWDICtx: pointer to the WLAN DAL context
26006 ucSTAIdx: station index
26007
26008 @return Result of the function call
26009*/
26010wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
26011{
26012 wpt_uint8 ucSTAType;
26013
26014 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
26015 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
26016 {
26017 if( ucSTAType == WDI_STA_ENTRY_SELF )
26018 return eWLAN_PAL_TRUE;
26019 }
26020
26021 return eWLAN_PAL_FALSE;
26022}
26023
26024
26025
Jeff Johnson295189b2012-06-20 16:38:30 -070026026#ifdef FEATURE_WLAN_SCAN_PNO
26027/**
26028 @brief WDI_SetPreferredNetworkList
26029
Jeff Johnsone7245742012-09-05 17:12:55 -070026030 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026031 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026032
Jeff Johnson295189b2012-06-20 16:38:30 -070026033 wdiPNOScanCb: callback for passing back the response
26034 of the Set PNO operation received from the
26035 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026036
Jeff Johnson295189b2012-06-20 16:38:30 -070026037 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026038 callback
26039
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 @return Result of the function call
26041*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026042WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026043WDI_SetPreferredNetworkReq
26044(
26045 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26046 WDI_PNOScanCb wdiPNOScanCb,
26047 void* pUserData
26048)
26049{
26050 WDI_EventInfoType wdiEventData = {{0}};
26051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26052
26053 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026054 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026055 ------------------------------------------------------------------------*/
26056 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26057 {
26058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26059 "WDI API call before module is initialized - Fail request");
26060
Jeff Johnsone7245742012-09-05 17:12:55 -070026061 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 }
26063
26064 /*------------------------------------------------------------------------
26065 Fill in Event data and post to the Main FSM
26066 ------------------------------------------------------------------------*/
26067 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026069 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026070 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026071 wdiEventData.pUserData = pUserData;
26072
26073 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26074}
26075
26076
26077/**
26078 @brief WDI_SetRssiFilterReq
26079
Jeff Johnsone7245742012-09-05 17:12:55 -070026080 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026081 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026082
Jeff Johnson295189b2012-06-20 16:38:30 -070026083 wdiRssiFilterCb: callback for passing back the response
26084 of the Set RSSI Filter operation received from the
26085 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026086
Jeff Johnson295189b2012-06-20 16:38:30 -070026087 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026088 callback
26089
Jeff Johnson295189b2012-06-20 16:38:30 -070026090 @return Result of the function call
26091*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026092WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026093WDI_SetRssiFilterReq
26094(
26095 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26096 WDI_RssiFilterCb wdiRssiFilterCb,
26097 void* pUserData
26098)
26099{
26100 WDI_EventInfoType wdiEventData = {{0}};
26101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26102
26103 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026104 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026105 ------------------------------------------------------------------------*/
26106 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26107 {
26108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26109 "WDI API call before module is initialized - Fail request");
26110
Jeff Johnsone7245742012-09-05 17:12:55 -070026111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 }
26113
26114 /*------------------------------------------------------------------------
26115 Fill in Event data and post to the Main FSM
26116 ------------------------------------------------------------------------*/
26117 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026118 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026119 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026120 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026121 wdiEventData.pUserData = pUserData;
26122
26123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26124}/*WDI_SetRssiFilterReq*/
26125
26126/**
26127 @brief WDI_UpdateScanParamsReq
26128
Jeff Johnsone7245742012-09-05 17:12:55 -070026129 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026130 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026131
Jeff Johnson295189b2012-06-20 16:38:30 -070026132 wdiUpdateScanParamsCb: callback for passing back the response
26133 of the Set PNO operation received from the
26134 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026135
Jeff Johnson295189b2012-06-20 16:38:30 -070026136 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026137 callback
26138
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 @return Result of the function call
26140*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026141WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026142WDI_UpdateScanParamsReq
26143(
26144 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
26145 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
26146 void* pUserData
26147)
26148{
26149 WDI_EventInfoType wdiEventData = {{0}};
26150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26151
26152 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026153 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026154 ------------------------------------------------------------------------*/
26155 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26156 {
26157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26158 "WDI API call before module is initialized - Fail request");
26159
Jeff Johnsone7245742012-09-05 17:12:55 -070026160 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 }
26162
26163 /*------------------------------------------------------------------------
26164 Fill in Event data and post to the Main FSM
26165 ------------------------------------------------------------------------*/
26166 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026167 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026168 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026169 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026170 wdiEventData.pUserData = pUserData;
26171
26172 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26173}
26174
26175/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026176 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026177 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026178
26179 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026180 pwdiPNOScanReqParams: pointer to the info received
26181 from upper layers
26182 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026183 and its size
26184
Jeff Johnson295189b2012-06-20 16:38:30 -070026185 @return Result of the function call
26186*/
26187
26188WDI_Status
26189WDI_PackPreferredNetworkList
26190(
26191 WDI_ControlBlockType* pWDICtx,
26192 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26193 wpt_uint8** ppSendBuffer,
26194 wpt_uint16* pSize
26195)
26196{
Jeff Johnsone7245742012-09-05 17:12:55 -070026197 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026198 wpt_uint16 usDataOffset = 0;
26199 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026200 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026201 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026202 /*-----------------------------------------------------------------------
26203 Get message buffer
26204 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026205 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026206 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026207 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026208 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026209 {
26210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026211 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026212 pwdiPNOScanReqParams);
26213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026215 }
26216
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026217 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
26218
Jeff Johnson295189b2012-06-20 16:38:30 -070026219 /*-------------------------------------------------------------------------
26220 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26221 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026222 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026223 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026224 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026225 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26226
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026227 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026228 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026229 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026230 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026231 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26232
26233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026234 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026235 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26236 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26237 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26238
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026239 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026240 {
26241 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026242 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026243 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26244
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026245 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026246 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026247 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026248
26249 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026250 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026251 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026252
26253 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026254 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026255 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026256
Jeff Johnsone7245742012-09-05 17:12:55 -070026257 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026258 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026259 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070026260 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
26261 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26262 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
26263 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026264
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026265 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026266 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026267 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026268
26269 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026270 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026271 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26272
26273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026274 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026275 pPrefNetwListParams->aNetworks[i].ssId.length,
26276 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026277 }
26278
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026279 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026280 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026281 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26282 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26283 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26284
26285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026286 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026287 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026288 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26289 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26290
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026291 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026292 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026293 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026294 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026295 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026296 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26297 }
26298
26299 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026300 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026301 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26302 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26303 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026304 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026305
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026306 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026307 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026308 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026309
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026310 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026311 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26312 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26313 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026314 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026315
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026316 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026317 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026318 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026319
26320 /*Set the output values*/
26321 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026322 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026323
26324 return WDI_STATUS_SUCCESS;
26325}/*WDI_PackPreferredNetworkList*/
26326
26327/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026328 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026329 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026330
26331 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026332 pwdiPNOScanReqParams: pointer to the info received
26333 from upper layers
26334 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026335 and its size
26336
Jeff Johnson295189b2012-06-20 16:38:30 -070026337 @return Result of the function call
26338*/
26339
26340WDI_Status
26341WDI_PackPreferredNetworkListNew
26342(
26343 WDI_ControlBlockType* pWDICtx,
26344 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26345 wpt_uint8** ppSendBuffer,
26346 wpt_uint16* pSize
26347)
26348{
Jeff Johnsone7245742012-09-05 17:12:55 -070026349 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026350 wpt_uint16 usDataOffset = 0;
26351 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026352 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026354
26355 /*-----------------------------------------------------------------------
26356 Get message buffer
26357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026359 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026360 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026361 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 {
26363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026364 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026365 pwdiPNOScanReqParams);
26366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026368 }
26369
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026370 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26371
Jeff Johnson295189b2012-06-20 16:38:30 -070026372 /*-------------------------------------------------------------------------
26373 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26374 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026375 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026376 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026377 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026378 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26379
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026380 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026381 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026382 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026383 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026384 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26385
26386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026387 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026388 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26389 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26390 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26391
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026392 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026393 {
26394 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026395 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026396 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26397
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026398 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026399 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026400 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026401
26402 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026403 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026404 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026405
26406 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026407 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026408 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026409
26410 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026411 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026412 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026413
Jeff Johnsone7245742012-09-05 17:12:55 -070026414 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026415 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026416 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026417 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26418
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026419 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026420 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026421 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026422
26423 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026424 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026425 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26426
26427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026428 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026429 pPrefNetwListParams->aNetworks[i].ssId.length,
26430 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026431 }
26432
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026433 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026434 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026435 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26436 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26437 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26438
26439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026440 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026441 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26443 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26444
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026445 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026446 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026447 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026448 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026449 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026450 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26451 }
26452
26453 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026454 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026455 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26456 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26457 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026458 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026459
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026460 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026461 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026462 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026463
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026464 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026465 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26466 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26467 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026468 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026469
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026470 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026471 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026472 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026473
Jeff Johnson295189b2012-06-20 16:38:30 -070026474
26475 /*Set the output values*/
26476 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026477 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026478
26479 return WDI_STATUS_SUCCESS;
26480}/*WDI_PackPreferredNetworkListNew*/
26481
26482/**
26483 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026484
26485 @param pWDICtx: pointer to the WLAN DAL context
26486 pEventData: pointer to the event information structure
26487
Jeff Johnson295189b2012-06-20 16:38:30 -070026488 @return Result of the function call
26489*/
26490WDI_Status
26491WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026492(
Jeff Johnson295189b2012-06-20 16:38:30 -070026493 WDI_ControlBlockType* pWDICtx,
26494 WDI_EventInfoType* pEventData
26495)
26496{
26497 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26498 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026499 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026500 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026501 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026502
26503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026505 -------------------------------------------------------------------------*/
26506 if (( NULL == pEventData ) ||
26507 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26508 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26509 {
26510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026514 }
26515
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026516 /*----------------------------------------------------------------------
26517 Avoid Enable PNO during any active session or an ongoing session
26518 ----------------------------------------------------------------------*/
26519 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26520 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26521 {
26522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26523 "%s:(Active/Ongoing Session) - Fail request", __func__);
26524
26525 return WDI_STATUS_E_FAILURE;
26526 }
26527
Jeff Johnson295189b2012-06-20 16:38:30 -070026528 /*-------------------------------------------------------------------------
26529 Pack the PNO request structure based on version
26530 -------------------------------------------------------------------------*/
26531 if ( pWDICtx->wdiPNOVersion > 0 )
26532 {
26533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026534 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026535 pWDICtx->wdiPNOVersion);
26536
26537 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26538 &pSendBuffer, &usSendSize);
26539 }
26540 else
26541 {
26542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026543 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026544 pWDICtx->wdiPNOVersion);
26545
26546 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26547 &pSendBuffer, &usSendSize);
26548 }
26549
26550 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26551 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26552 {
26553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026554 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026556 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026557 }
26558
26559 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026560 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026561
26562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026563 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026565 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26566 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026567}
26568
26569/**
26570 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026571
26572 @param pWDICtx: pointer to the WLAN DAL context
26573 pEventData: pointer to the event information structure
26574
Jeff Johnson295189b2012-06-20 16:38:30 -070026575 @see
26576 @return Result of the function call
26577*/
26578WDI_Status
26579WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026580(
Jeff Johnson295189b2012-06-20 16:38:30 -070026581 WDI_ControlBlockType* pWDICtx,
26582 WDI_EventInfoType* pEventData
26583)
26584{
26585 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26586 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026587 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026588 wpt_uint16 usDataOffset = 0;
26589 wpt_uint16 usSendSize = 0;
26590 wpt_uint8 ucRssiThreshold;
26591
26592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026594 -------------------------------------------------------------------------*/
26595 if (( NULL == pEventData ) ||
26596 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26597 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26598 {
26599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026603 }
26604
26605 /*-----------------------------------------------------------------------
26606 Get message buffer
26607 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026609 sizeof(ucRssiThreshold),
26610 &pSendBuffer, &usDataOffset, &usSendSize))||
26611 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26612 {
26613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026614 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026615 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026618 }
26619
26620 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26621
Jeff Johnsone7245742012-09-05 17:12:55 -070026622 wpalMemoryCopy( pSendBuffer+usDataOffset,
26623 &ucRssiThreshold,
26624 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026625
26626 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026627 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026628
26629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026630 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26633 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026634}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026635#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26636/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026637 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026638
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026639 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026640 by the Device Interface
26641
26642 wdiRoamOffloadScancb: callback for passing back the response
26643 of the Roam Candidate Lookup Req operation received from the
26644 device
26645
26646 pUserData: user data will be passed back with the
26647 callback
26648 @return Result of the function call
26649*/
26650WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026651WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026652(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026653 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026654 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26655 void* pUserData
26656)
26657{
26658 WDI_EventInfoType wdiEventData = {{0}};
26659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26660
26661 /*------------------------------------------------------------------------
26662 Sanity Check
26663 ------------------------------------------------------------------------*/
26664 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26665 {
26666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26667 "WDI API call before module is initialized - Fail request");
26668
26669 return WDI_STATUS_E_NOT_ALLOWED;
26670 }
26671
26672 /*------------------------------------------------------------------------
26673 Fill in Event data and post to the Main FSM
26674 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026675 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26676 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26677 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026678 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26679 wdiEventData.pUserData = pUserData;
26680
26681 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26682}
26683
26684void
26685WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26686{
26687 switch (wdiEdType)
26688 {
26689 case WDI_ED_NONE:
26690 *EdType = eED_NONE;
26691 break;
26692 case WDI_ED_WEP40:
26693 case WDI_ED_WEP104:
26694 *EdType = eED_WEP;
26695 break;
26696 case WDI_ED_TKIP:
26697 *EdType = eED_TKIP;
26698 break;
26699 case WDI_ED_CCMP:
26700#ifdef WLAN_FEATURE_11W
26701 case WDI_ED_AES_128_CMAC:
26702#endif
26703 *EdType = eED_CCMP;
26704 break;
26705#ifdef FEATURE_WLAN_WAPI
26706 case WDI_ED_WPI:
26707 *EdType = eED_WPI;
26708 break;
26709#endif
26710 case WDI_ED_ANY:
26711 *EdType = eED_ANY;
26712 break;
26713
26714 default:
26715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26716 "%s: Unknown Encryption Type", __func__);
26717 break;
26718 }
26719}
26720
26721/**
26722 @brief Helper function to pack Start Roam Candidate Lookup
26723 Request parameters
26724
26725 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026726 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026727 from upper layers
26728 ppSendBuffer, pSize - out pointers of the packed buffer
26729 and its size
26730
26731 @return Result of the function call
26732*/
26733
26734WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026735WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026736(
26737 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026738 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026739 wpt_uint8** ppSendBuffer,
26740 wpt_uint16* pSize
26741)
26742{
26743 wpt_uint8* pSendBuffer = NULL;
26744 wpt_uint16 usDataOffset = 0;
26745 wpt_uint16 usSendSize = 0;
26746 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26747 wpt_uint8 i;
26748 /*-----------------------------------------------------------------------
26749 Get message buffer
26750 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026751 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026752 sizeof(tRoamCandidateListParams),
26753 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026754 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026755 {
26756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026757 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026758 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026759 WDI_ASSERT(0);
26760 return WDI_STATUS_E_FAILURE;
26761 }
26762 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026763 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026764 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026765 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026766 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026767 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026768 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026769 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026770 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026771 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026772 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026773
26774 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026775 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026776 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026777 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026778 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26779 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026780 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26781 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26782 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26783 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26784 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026785 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026786 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026787 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026788 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26789 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26790 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26791 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26792 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26793 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26794 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026795 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026796 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026797 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26798 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26799 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026800
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26802 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26803 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26804 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26805 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26806 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026807 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026808 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26809 pRoamCandidateListParams->RoamScanOffloadEnabled,
26810 pRoamCandidateListParams->Command,
26811 pRoamCandidateListParams->StartScanReason,
26812 pRoamCandidateListParams->NeighborScanTimerPeriod,
26813 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26814 pRoamCandidateListParams->NeighborScanChannelMinTime,
26815 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26816 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26817 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26818 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26819 pRoamCandidateListParams->ConnectedNetwork.authentication,
26820 pRoamCandidateListParams->ConnectedNetwork.encryption,
26821 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26822 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26823 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026824 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026825 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026826 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026827 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026828 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26829 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026830 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026831 pRoamCandidateListParams->us24GProbeSize);
26832 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026833 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026834 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026835 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026836 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26837 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026838 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026839 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026840 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26841 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26842 pRoamCandidateListParams->nProbes =
26843 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26844 pRoamCandidateListParams->HomeAwayTime =
26845 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026847 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26848 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026850 }
26851
26852
26853 /*Set the output values*/
26854 *ppSendBuffer = pSendBuffer;
26855 *pSize = usSendSize;
26856 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026857}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026858
26859/**
26860 @brief Process Start Roam Candidate Lookup Request function
26861
26862 @param pWDICtx: pointer to the WLAN DAL context
26863 pEventData: pointer to the event information structure
26864
26865 @return Result of the function call
26866*/
26867WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026868WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026869(
26870 WDI_ControlBlockType* pWDICtx,
26871 WDI_EventInfoType* pEventData
26872)
26873{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026874 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026875 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26876 wpt_uint8* pSendBuffer = NULL;
26877 wpt_uint16 usSendSize = 0;
26878 WDI_Status wdiStatus;
26879 /*-------------------------------------------------------------------------
26880 Sanity check
26881 -------------------------------------------------------------------------*/
26882 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026883 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026884 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26885 {
26886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26887 "%s: Invalid parameters", __func__);
26888 WDI_ASSERT(0);
26889 return WDI_STATUS_E_FAILURE;
26890 }
26891
26892 /*-------------------------------------------------------------------------
26893 Pack the Start Roam Candidate Lookup request structure based on version
26894 -------------------------------------------------------------------------*/
26895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26896 "%s: Packing Roam Candidate Lookup request ", __func__);
26897
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026898 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026899 &pSendBuffer, &usSendSize);
26900
26901 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26902 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26903 {
26904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26905 "%s: failed to pack request parameters", __func__);
26906 WDI_ASSERT(0);
26907 return wdiStatus;
26908 }
26909
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026910 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26911 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026912
26913 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026914 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026915 -------------------------------------------------------------------------*/
26916 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026917 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026918}
26919
26920/**
26921 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26922 response is being received over the bus from HAL)
26923
26924 @param pWDICtx: pointer to the WLAN DAL context
26925 pEventData: pointer to the event information structure
26926
26927 @see
26928 @return Result of the function call
26929*/
26930WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026931WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026932(
26933 WDI_ControlBlockType* pWDICtx,
26934 WDI_EventInfoType* pEventData
26935)
26936{
26937 WDI_Status wdiStatus;
26938 eHalStatus halStatus;
26939 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26940
26941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26942
26943 /*-------------------------------------------------------------------------
26944 Sanity check
26945 -------------------------------------------------------------------------*/
26946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26947 ( NULL == pEventData->pEventData ))
26948 {
26949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26950 "%s: Invalid parameters", __func__);
26951 WDI_ASSERT(0);
26952 return WDI_STATUS_E_FAILURE;
26953 }
26954
26955 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26956
26957 /*-------------------------------------------------------------------------
26958 Extract response and send it to UMAC
26959 -------------------------------------------------------------------------*/
26960 halStatus = *((eHalStatus*)pEventData->pEventData);
26961 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26962
26963 /*Notify UMAC*/
26964 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26965
26966 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026967}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026968#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026969
26970/**
26971 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026972
26973 @param pWDICtx: pointer to the WLAN DAL context
26974 pEventData: pointer to the event information structure
26975
Jeff Johnson295189b2012-06-20 16:38:30 -070026976 @see
26977 @return Result of the function call
26978*/
26979WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026980WDI_PackUpdateScanParamsReq
26981(
26982 WDI_ControlBlockType* pWDICtx,
26983 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26984 wpt_uint8** ppSendBuffer,
26985 wpt_uint16* pSize
26986)
26987{
26988 wpt_uint8* pSendBuffer = NULL;
26989 wpt_uint16 usDataOffset = 0;
26990 wpt_uint16 usSendSize = 0;
26991 tUpdateScanParams updateScanParams = {0};
26992
26993
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026995 "Begin WDI Update Scan Parameters Old Style Params");
26996 /*-----------------------------------------------------------------------
26997 Get message buffer
26998 -----------------------------------------------------------------------*/
26999 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27000 sizeof(updateScanParams),
27001 &pSendBuffer, &usDataOffset, &usSendSize))||
27002 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27003 {
27004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027005 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027006 pwdiUpdateScanParams);
27007 WDI_ASSERT(0);
27008 return WDI_STATUS_E_FAILURE;
27009 }
27010
27011 //
27012 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27013 //
27014
27015 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27016 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27017
27018 updateScanParams.ucChannelCount =
27019 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27020 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
27021 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27022 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
27023
27024 wpalMemoryCopy( updateScanParams.aChannels,
27025 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27026 updateScanParams.ucChannelCount);
27027
27028
27029 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27030 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27031 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27032 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27033 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27034
27035 wpalMemoryCopy( pSendBuffer+usDataOffset,
27036 &updateScanParams,
27037 sizeof(updateScanParams));
27038
27039 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27040 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27041
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027043 "End Update Scan Parameters Old Style");
27044
27045 /*Set the output values*/
27046 *ppSendBuffer = pSendBuffer;
27047 *pSize = usSendSize;
27048
27049 return WDI_STATUS_SUCCESS;
27050}
27051
27052/**
27053 @brief Process Update Scan Params function
27054
27055 @param pWDICtx: pointer to the WLAN DAL context
27056 pEventData: pointer to the event information structure
27057
27058 @see
27059 @return Result of the function call
27060*/
27061WDI_Status
27062WDI_PackUpdateScanParamsReqEx
27063(
27064 WDI_ControlBlockType* pWDICtx,
27065 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
27066 wpt_uint8** ppSendBuffer,
27067 wpt_uint16* pSize
27068)
27069{
27070 wpt_uint8* pSendBuffer = NULL;
27071 wpt_uint16 usDataOffset = 0;
27072 wpt_uint16 usSendSize = 0;
27073 tUpdateScanParamsEx updateScanParams = {0};
27074
27075
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027076 /*-----------------------------------------------------------------------
27077 Get message buffer
27078 -----------------------------------------------------------------------*/
27079 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27080 sizeof(updateScanParams),
27081 &pSendBuffer, &usDataOffset, &usSendSize))||
27082 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27083 {
27084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027085 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027086 pwdiUpdateScanParams);
27087 WDI_ASSERT(0);
27088 return WDI_STATUS_E_FAILURE;
27089 }
27090
27091 //
27092 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27093 //
27094
27095 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27096 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27097
27098 updateScanParams.ucChannelCount =
27099 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27100 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
27101 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27102 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
27103
27104 wpalMemoryCopy( updateScanParams.aChannels,
27105 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27106 updateScanParams.ucChannelCount);
27107
27108
27109 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27110 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27111 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27112 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27113 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27114
27115 wpalMemoryCopy( pSendBuffer+usDataOffset,
27116 &updateScanParams,
27117 sizeof(updateScanParams));
27118
27119 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27120 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27121
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027122 /*Set the output values*/
27123 *ppSendBuffer = pSendBuffer;
27124 *pSize = usSendSize;
27125
27126 return WDI_STATUS_SUCCESS;
27127}
27128
27129/**
27130 @brief Process Update Scan Params function
27131
27132 @param pWDICtx: pointer to the WLAN DAL context
27133 pEventData: pointer to the event information structure
27134
27135 @see
27136 @return Result of the function call
27137*/
27138WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027139WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027140(
Jeff Johnson295189b2012-06-20 16:38:30 -070027141 WDI_ControlBlockType* pWDICtx,
27142 WDI_EventInfoType* pEventData
27143)
27144{
27145 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
27146 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027147 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027148 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027149 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027150
27151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027153 -------------------------------------------------------------------------*/
27154 if (( NULL == pEventData ) ||
27155 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
27156 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
27157 {
27158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027162 }
27163
27164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27165 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070027166
27167 //
27168 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27169 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027170 if ( pWDICtx->wlanVersion.revision < 1 )
27171 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027172 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027173 &pSendBuffer, &usSendSize);
27174 }
27175 else
27176 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027177 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
27178 &pSendBuffer, &usSendSize);
27179 }
27180
27181 if(WDI_STATUS_SUCCESS != wdiStatus)
27182 {
27183 //memory allocation failed
27184 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027185 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027186
Jeff Johnson295189b2012-06-20 16:38:30 -070027187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027188 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027190 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027191 wdiUpdateScanParamsCb, pEventData->pUserData,
27192 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027193}
27194
27195/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027196 @brief Process Update Channel Params function
27197
27198 @param pWDICtx: pointer to the WLAN DAL context
27199 pEventData: pointer to the event information structure
27200
27201 @see
27202 @return Result of the function call
27203*/
27204WDI_Status
27205WDI_ProcessUpdateChannelParamsReq
27206(
27207 WDI_ControlBlockType* pWDICtx,
27208 WDI_EventInfoType* pEventData
27209)
27210{
27211 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
27212 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
27213 wpt_uint8* pSendBuffer = NULL;
27214 wpt_uint16 usDataOffset = 0;
27215 wpt_uint16 usSendSize = 0;
27216 tUpdateChannelReqType *updateChannelParams;
27217 wpt_uint32 usUpdateChanParamSize;
27218 wpt_uint8 num_channels = 0;
27219
27220 /*-------------------------------------------------------------------------
27221 Sanity check
27222 -------------------------------------------------------------------------*/
27223 if (( NULL == pEventData ) ||
27224 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
27225 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
27226 {
27227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27228 "%s: Invalid parameters", __func__);
27229 WDI_ASSERT(0);
27230 return WDI_STATUS_E_FAILURE;
27231 }
27232 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053027233 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027234
27235 /*-----------------------------------------------------------------------
27236 Get message buffer
27237 -----------------------------------------------------------------------*/
27238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27239 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
27240 &pSendBuffer, &usDataOffset, &usSendSize))||
27241 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
27242 {
27243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27244 "Unable to get send buffer in Update Channel Params req %p",
27245 pwdiUpdateChanListParams);
27246 WDI_ASSERT(0);
27247 return WDI_STATUS_E_FAILURE;
27248 }
27249 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
27250
27251 updateChannelParams->numChan = num_channels;
27252 wpalMemoryCopy(&updateChannelParams->chanParam,
27253 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
27254 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
27255
27256 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
27257 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
27258
27259 /*-------------------------------------------------------------------------
27260 Send Update channel request to fw
27261 -------------------------------------------------------------------------*/
27262 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27263 wdiUpdateChanParamsCb, pEventData->pUserData,
27264 WDI_UPDATE_CHAN_RESP);
27265}
27266
27267/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027268 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070027269
27270 @param pWDICtx: pointer to the WLAN DAL context
27271 pEventData: pointer to the event information structure
27272
Jeff Johnson295189b2012-06-20 16:38:30 -070027273 @see
27274 @return Result of the function call
27275*/
27276WDI_Status
27277WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070027278(
Jeff Johnson295189b2012-06-20 16:38:30 -070027279 WDI_ControlBlockType* pWDICtx,
27280 WDI_EventInfoType* pEventData
27281)
27282{
Srikant Kuppa066904f2013-05-07 13:56:02 -070027283 WDI_LowLevelIndType wdiInd;
27284 tpPrefNetwFoundParams pNetwFoundParams;
27285 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027286
27287
27288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027290 -------------------------------------------------------------------------*/
27291 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27292 ( NULL == pEventData->pEventData ))
27293 {
27294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027296 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070027297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027298 }
27299
27300 /*-------------------------------------------------------------------------
27301 Extract indication and send it to UMAC
27302 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070027303 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
27304
27305 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
27306 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
27307 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
27308
27309 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
27310 {
27311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27312 "%s: fail to allocate memory", __func__);
27313 return WDI_STATUS_MEM_FAILURE;
27314 }
27315
27316 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27317 (pNetwFoundParams->ssId.length < 32 )?
27318 pNetwFoundParams->ssId.length : 32;
27319 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27320 pNetwFoundParams->ssId.ssId,
27321 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27322 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27323 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27324 pNetwFoundParams->frameLength;
27325 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27326 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27327 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027328
27329 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027330 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027331
Jeff Johnson295189b2012-06-20 16:38:30 -070027332 // DEBUG
27333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027334 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027335 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027336 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027337 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027338 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027339 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27340
ltimariub77f24b2013-01-24 18:54:33 -080027341 if ( pWDICtx->wdiLowLevelIndCB )
27342 {
27343 /*Notify UMAC*/
27344 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27345 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027346
27347 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027348}
27349
27350/**
27351 @brief Process PNO Rsp function (called when a
27352 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027353
27354 @param pWDICtx: pointer to the WLAN DAL context
27355 pEventData: pointer to the event information structure
27356
Jeff Johnson295189b2012-06-20 16:38:30 -070027357 @see
27358 @return Result of the function call
27359*/
27360WDI_Status
27361WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027362(
Jeff Johnson295189b2012-06-20 16:38:30 -070027363 WDI_ControlBlockType* pWDICtx,
27364 WDI_EventInfoType* pEventData
27365)
27366{
27367 WDI_Status wdiStatus;
27368 eHalStatus halStatus;
27369 WDI_PNOScanCb wdiPNOScanCb = NULL;
27370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27371
27372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027374 -------------------------------------------------------------------------*/
27375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27376 ( NULL == pEventData->pEventData ))
27377 {
27378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027382 }
27383
27384
Jeff Johnsone7245742012-09-05 17:12:55 -070027385 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027386
27387 /*-------------------------------------------------------------------------
27388 Extract response and send it to UMAC
27389 -------------------------------------------------------------------------*/
27390 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027391 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027392
27393 /*Notify UMAC*/
27394 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27395
Jeff Johnsone7245742012-09-05 17:12:55 -070027396 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027397}/*WDI_ProcessSetPreferredNetworkRsp*/
27398
27399/**
27400 @brief Process RSSI Filter Rsp function (called when a
27401 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027402
27403 @param pWDICtx: pointer to the WLAN DAL context
27404 pEventData: pointer to the event information structure
27405
Jeff Johnson295189b2012-06-20 16:38:30 -070027406 @see
27407 @return Result of the function call
27408*/
27409WDI_Status
27410WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027411(
Jeff Johnson295189b2012-06-20 16:38:30 -070027412 WDI_ControlBlockType* pWDICtx,
27413 WDI_EventInfoType* pEventData
27414)
27415{
27416 WDI_Status wdiStatus;
27417 eHalStatus halStatus;
27418 WDI_RssiFilterCb wdiRssiFilterCb;
27419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27420
27421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027423 -------------------------------------------------------------------------*/
27424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27425 ( NULL == pEventData->pEventData ))
27426 {
27427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027431 }
27432
Jeff Johnsone7245742012-09-05 17:12:55 -070027433 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027434
27435 /*-------------------------------------------------------------------------
27436 Extract response and send it to UMAC
27437 -------------------------------------------------------------------------*/
27438 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027439 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027440
27441 /*Notify UMAC*/
27442 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27443
Jeff Johnsone7245742012-09-05 17:12:55 -070027444 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027445}/*WDI_ProcessSetRssiFilterRsp*/
27446
27447/**
27448 @brief Process Update Scan Params Rsp function (called when a
27449 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027450
27451 @param pWDICtx: pointer to the WLAN DAL context
27452 pEventData: pointer to the event information structure
27453
Jeff Johnson295189b2012-06-20 16:38:30 -070027454 @see
27455 @return Result of the function call
27456*/
27457WDI_Status
27458WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027459(
Jeff Johnson295189b2012-06-20 16:38:30 -070027460 WDI_ControlBlockType* pWDICtx,
27461 WDI_EventInfoType* pEventData
27462)
27463{
27464 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027465 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027466 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027467 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27469
27470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027472 -------------------------------------------------------------------------*/
27473 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27474 ( NULL == pEventData->pEventData ))
27475 {
27476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027480 }
27481
27482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027483 "%s: Process UPD scan params ptr : %p",
27484 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027485
Jeff Johnsone7245742012-09-05 17:12:55 -070027486 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027487
27488 /*-------------------------------------------------------------------------
27489 Extract response and send it to UMAC
27490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027491 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27492 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027493 sizeof(halUpdScanParams.status));
27494
27495 uStatus = halUpdScanParams.status;
27496
27497 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027498 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027499
27500 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027501 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027502
Jeff Johnsone7245742012-09-05 17:12:55 -070027503 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027504
27505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027506 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027507 halUpdScanParams.status);
27508
27509 /*Notify UMAC*/
27510 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27511
Jeff Johnsone7245742012-09-05 17:12:55 -070027512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027513}
27514#endif // FEATURE_WLAN_SCAN_PNO
27515
27516#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027517WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027518WDI_8023MulticastListReq
27519(
27520 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27521 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27522 void* pUserData
27523)
27524{
27525 WDI_EventInfoType wdiEventData;
27526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27527
27528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027529 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027530
27531 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027532 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027533 ------------------------------------------------------------------------*/
27534 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27535 {
27536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27537 "WDI API call before module is initialized - Fail request");
27538
Jeff Johnsone7245742012-09-05 17:12:55 -070027539 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027540 }
27541
27542 /*------------------------------------------------------------------------
27543 Fill in Event data and post to the Main FSM
27544 ------------------------------------------------------------------------*/
27545 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027546 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027547 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027548 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027549 wdiEventData.pUserData = pUserData;
27550
27551 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27552}
27553
Jeff Johnsone7245742012-09-05 17:12:55 -070027554WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027555WDI_ReceiveFilterSetFilterReq
27556(
27557 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27558 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27559 void* pUserData
27560)
27561{
27562 WDI_EventInfoType wdiEventData;
27563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27564
27565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027566 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027567
27568 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027569 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027570 ------------------------------------------------------------------------*/
27571 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27572 {
27573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27574 "WDI API call before module is initialized - Fail request");
27575
Jeff Johnsone7245742012-09-05 17:12:55 -070027576 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027577 }
27578
27579 /*------------------------------------------------------------------------
27580 Fill in Event data and post to the Main FSM
27581 ------------------------------------------------------------------------*/
27582 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027583 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27584 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027585 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27586 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027587 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027588 wdiEventData.pUserData = pUserData;
27589
27590
27591 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27592}
27593
Jeff Johnsone7245742012-09-05 17:12:55 -070027594WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027595WDI_FilterMatchCountReq
27596(
27597 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27598 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27599 void* pUserData
27600)
27601{
27602 WDI_EventInfoType wdiEventData;
27603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27604
27605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027606 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027607
27608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027609 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027610 ------------------------------------------------------------------------*/
27611 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27612 {
27613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27614 "WDI API call before module is initialized - Fail request");
27615
Jeff Johnsone7245742012-09-05 17:12:55 -070027616 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027617 }
27618
27619 /*------------------------------------------------------------------------
27620 Fill in Event data and post to the Main FSM
27621 ------------------------------------------------------------------------*/
27622 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027623 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027624 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027625 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027626 wdiEventData.pUserData = pUserData;
27627
27628
27629 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27630}
27631
Jeff Johnsone7245742012-09-05 17:12:55 -070027632WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027633WDI_ReceiveFilterClearFilterReq
27634(
27635 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27636 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27637 void* pUserData
27638)
27639{
27640 WDI_EventInfoType wdiEventData;
27641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27642
27643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027644 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027645
27646 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027647 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027648 ------------------------------------------------------------------------*/
27649 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27650 {
27651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27652 "WDI API call before module is initialized - Fail request");
27653
Jeff Johnsone7245742012-09-05 17:12:55 -070027654 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027655 }
27656
27657 /*------------------------------------------------------------------------
27658 Fill in Event data and post to the Main FSM
27659 ------------------------------------------------------------------------*/
27660 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027661 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027662 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027663 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027664 wdiEventData.pUserData = pUserData;
27665
27666
27667 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27668}
27669
27670/**
27671 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027672
27673 @param pWDICtx: pointer to the WLAN DAL context
27674 pEventData: pointer to the event information structure
27675
Jeff Johnson295189b2012-06-20 16:38:30 -070027676 @see
27677 @return Result of the function call
27678*/
27679WDI_Status
27680WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027681(
Jeff Johnson295189b2012-06-20 16:38:30 -070027682 WDI_ControlBlockType* pWDICtx,
27683 WDI_EventInfoType* pEventData
27684)
27685{
27686 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27687 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027688 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027689 wpt_uint16 usDataOffset = 0;
27690 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027691 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027692 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027693 wpt_uint8 ucCurrentBSSSesIdx = 0;
27694 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027695
27696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027697 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027698
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027699 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27700 if( NULL == pRcvFltMcAddrListType )
27701 {
27702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27703 "Failed to alloc in WDI_Process8023MulticastListReq");
27704 return WDI_STATUS_E_FAILURE;
27705 }
27706
Jeff Johnson295189b2012-06-20 16:38:30 -070027707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027709 -------------------------------------------------------------------------*/
27710 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027711 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027712 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027713 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027714 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27715 {
27716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027717 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027718 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027720 return WDI_STATUS_E_FAILURE;
27721 }
27722
27723 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27724 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27725 &pBSSSes);
27726 if ( NULL == pBSSSes )
27727 {
27728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027729 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027730 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027732 }
27733
27734 /*-----------------------------------------------------------------------
27735 Get message buffer
27736 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027737 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27738 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027739 sizeof(tHalRcvFltMcAddrListType),
27740 &pSendBuffer, &usDataOffset, &usSendSize))||
27741 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27742 {
27743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27744 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027745 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027746 pEventData, pwdiFltPktSetMcListReqParamsType,
27747 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027748 wpalMemoryFree(pRcvFltMcAddrListType);
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
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027753 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027754 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027755 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027756 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027757 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027758 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27759 sizeof(tSirMacAddr));
27760 }
27761
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027762 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027763 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027764 pRcvFltMcAddrListType,
27765 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027766
27767 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027768 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027769
27770
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027771 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027773 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027774 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027775 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027776 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027777 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027778}
27779
27780/**
27781 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027782
27783 @param pWDICtx: pointer to the WLAN DAL context
27784 pEventData: pointer to the event information structure
27785
Jeff Johnson295189b2012-06-20 16:38:30 -070027786 @see
27787 @return Result of the function call
27788*/
27789WDI_Status
27790WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027791(
Jeff Johnson295189b2012-06-20 16:38:30 -070027792 WDI_ControlBlockType* pWDICtx,
27793 WDI_EventInfoType* pEventData
27794)
27795{
27796 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27797 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027798 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027799 wpt_uint16 usDataOffset = 0;
27800 wpt_uint16 usSendSize = 0;
27801 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027802 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027803 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027804 wpt_uint8 ucCurrentBSSSesIdx = 0;
27805 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027806 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27807 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027808
27809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027810 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027811
27812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027814 -------------------------------------------------------------------------*/
27815 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027816 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027817 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027818 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027819 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27820 {
27821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027822 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027824 return WDI_STATUS_E_FAILURE;
27825 }
27826
27827 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27828 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27829 &pBSSSes);
27830 if ( NULL == pBSSSes )
27831 {
27832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027833 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027835 }
27836
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027837 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27838 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027839
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027840 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27841 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27842 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27843
27844 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27845 usSessRcvPktFilterCfgSize);
27846
27847 if(NULL == pSessRcvPktFilterCfg)
27848 {
27849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27850 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027851 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027852 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027853 WDI_ASSERT(0);
27854 return WDI_STATUS_E_FAILURE;
27855 }
27856
27857 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27858
27859 /*-----------------------------------------------------------------------
27860 Get message buffer
27861 -----------------------------------------------------------------------*/
27862
27863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27864 usSessRcvPktFilterCfgSize,
27865 &pSendBuffer, &usDataOffset, &usSendSize))||
27866 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27867 {
27868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27869 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027870 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027871 pEventData, pwdiSetRcvPktFilterReqInfo,
27872 wdiReceiveFilterSetFilterCb);
27873 WDI_ASSERT(0);
27874 wpalMemoryFree(pSessRcvPktFilterCfg);
27875 return WDI_STATUS_E_FAILURE;
27876 }
27877
27878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027879 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027880 usSendSize,pSessRcvPktFilterCfg);
27881
27882 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27883 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27884 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27885 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27886
27887 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27888
27889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27890 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27891 pSessRcvPktFilterCfg->filterType);
27892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27893 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27894 pSessRcvPktFilterCfg->coleasceTime);
27895
27896 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27897 {
27898 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27899 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27900 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27901 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27902 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27903 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27904 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27905 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27906
27907 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27908 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27909 8);
27910 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27911 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27912 8);
27913
27914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027915 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027916 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27917 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27918
27919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027920 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027921 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27922 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27923
27924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027925 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027926 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27927 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27928 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27929 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27930 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27931 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27932
27933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027934 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027935 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27936 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27937 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27938 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27939 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27940 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27941 }
27942
27943 wpalMemoryCopy( pSendBuffer+usDataOffset,
27944 pSessRcvPktFilterCfg,
27945 usSessRcvPktFilterCfgSize);
27946
27947
27948 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27949 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27950
27951 wpalMemoryFree(pSessRcvPktFilterCfg);
27952
27953 }
27954 /*If SLM_SESSIONIZATION is not supported then do this */
27955 else
27956 {
27957 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27958 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27959 * sizeof(tHalRcvPktFilterParams));
27960
27961 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027962 usRcvPktFilterCfgSize);
27963
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027964 if(NULL == pRcvPktFilterCfg)
27965 {
27966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27967 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027968 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027969 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027970 WDI_ASSERT(0);
27971 return WDI_STATUS_E_FAILURE;
27972 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027973
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027974 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027975
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027976 /*-----------------------------------------------------------------------
27977 Get message buffer
27978 -----------------------------------------------------------------------*/
27979 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027980 usRcvPktFilterCfgSize,
27981 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027982 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27983 {
27984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027985 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027986 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027987 pEventData, pwdiSetRcvPktFilterReqInfo,
27988 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027989 WDI_ASSERT(0);
27990 wpalMemoryFree(pRcvPktFilterCfg);
27991 return WDI_STATUS_E_FAILURE;
27992 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027993
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027995 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027996 usSendSize,usRcvPktFilterCfgSize);
27997
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027998 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27999 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
28000 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
28001 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070028002
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028004 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070028005 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070028007 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070028008 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070028009
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028010 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
28011 {
28012 pRcvPktFilterCfg->paramsData[i].protocolLayer =
28013 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
28014 pRcvPktFilterCfg->paramsData[i].cmpFlag =
28015 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
28016 pRcvPktFilterCfg->paramsData[i].dataOffset =
28017 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
28018 pRcvPktFilterCfg->paramsData[i].dataLength =
28019 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070028020
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028021 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070028022 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
28023 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028024 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070028025 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
28026 8);
28027
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028029 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070028030 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070028031 pRcvPktFilterCfg->paramsData[i].cmpFlag);
28032
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028034 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028035 pRcvPktFilterCfg->paramsData[i].dataOffset,
28036 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070028037
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028039 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028040 pRcvPktFilterCfg->paramsData[i].compareData[0],
28041 pRcvPktFilterCfg->paramsData[i].compareData[1],
28042 pRcvPktFilterCfg->paramsData[i].compareData[2],
28043 pRcvPktFilterCfg->paramsData[i].compareData[3],
28044 pRcvPktFilterCfg->paramsData[i].compareData[4],
28045 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070028046
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028048 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028049 pRcvPktFilterCfg->paramsData[i].dataMask[0],
28050 pRcvPktFilterCfg->paramsData[i].dataMask[1],
28051 pRcvPktFilterCfg->paramsData[i].dataMask[2],
28052 pRcvPktFilterCfg->paramsData[i].dataMask[3],
28053 pRcvPktFilterCfg->paramsData[i].dataMask[4],
28054 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
28055 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028056
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028057 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070028058 pRcvPktFilterCfg,
28059 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070028060
28061
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028062 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
28063 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028064
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028066 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028067 wpalMemoryFree(pRcvPktFilterCfg);
28068 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028070 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028071 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028072 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028073 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028074 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028075}
28076
28077/**
28078 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028079
28080 @param pWDICtx: pointer to the WLAN DAL context
28081 pEventData: pointer to the event information structure
28082
Jeff Johnson295189b2012-06-20 16:38:30 -070028083 @see
28084 @return Result of the function call
28085*/
28086WDI_Status
28087WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028088(
Jeff Johnson295189b2012-06-20 16:38:30 -070028089 WDI_ControlBlockType* pWDICtx,
28090 WDI_EventInfoType* pEventData
28091)
28092{
28093 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
28094 NULL;
28095 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
28096 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028097 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028098 wpt_uint16 usDataOffset = 0;
28099 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028100 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
28101 wpt_uint8 ucCurrentBSSSesIdx = 0;
28102 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028103
28104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028105 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028106
28107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028108 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028109 -------------------------------------------------------------------------*/
28110 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028111 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028112 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028113 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028114 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
28115 {
28116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028120 }
28121
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028122 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28123 pwdiRcvFltPktMatchCntReqParamsType->bssId,
28124 &pBSSSes);
28125 if ( NULL == pBSSSes )
28126 {
28127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028128 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028129 return WDI_STATUS_E_FAILURE;
28130 }
28131
Jeff Johnson295189b2012-06-20 16:38:30 -070028132 /*-----------------------------------------------------------------------
28133 Get message buffer
28134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028135 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28136 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028137 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028138 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028139 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028140 {
28141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28142 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028143 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028144 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
28145 wdiFilterMatchCountCb);
28146 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028148 }
28149
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028150 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
28151 wpalMemoryCopy( pSendBuffer+usDataOffset,
28152 &rcvFltPktMatchCntReqParam,
28153 sizeof(rcvFltPktMatchCntReqParam));
28154
Jeff Johnson295189b2012-06-20 16:38:30 -070028155 //
28156 // Don't need to fill send buffer other than header
28157 //
28158 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028159 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028160
28161
28162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028163 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28166 wdiFilterMatchCountCb,
28167 pEventData->pUserData,
28168 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028169}
28170
28171/**
28172 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028173
28174 @param pWDICtx: pointer to the WLAN DAL context
28175 pEventData: pointer to the event information structure
28176
Jeff Johnson295189b2012-06-20 16:38:30 -070028177 @see
28178 @return Result of the function call
28179*/
28180WDI_Status
28181WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028182(
Jeff Johnson295189b2012-06-20 16:38:30 -070028183 WDI_ControlBlockType* pWDICtx,
28184 WDI_EventInfoType* pEventData
28185)
Jeff Johnsone7245742012-09-05 17:12:55 -070028186{
Jeff Johnson295189b2012-06-20 16:38:30 -070028187 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
28188 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028189 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028190 wpt_uint16 usDataOffset = 0;
28191 wpt_uint16 usSendSize = 0;
28192 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028193 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070028194 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028195
28196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028197 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028198
28199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028200 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028201 -------------------------------------------------------------------------*/
28202 if (( NULL == pEventData ) ||
28203 ( NULL == (pwdiRcvFltPktClearReqParamsType =
28204 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028205 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028206 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
28207 {
28208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028211 return WDI_STATUS_E_FAILURE;
28212 }
28213
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028214 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028215 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
28216 &pBSSSes);
28217 if ( NULL == pBSSSes )
28218 {
28219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028220 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028222 }
28223
28224 /*-----------------------------------------------------------------------
28225 Get message buffer
28226 -----------------------------------------------------------------------*/
28227 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028228 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028229 sizeof(tHalRcvFltPktClearParam),
28230 &pSendBuffer, &usDataOffset, &usSendSize))||
28231 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
28232 {
28233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28234 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028235 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028236 pEventData, pwdiRcvFltPktClearReqParamsType,
28237 wdiRcvFltPktClearFilterCb);
28238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028240 }
28241
28242
28243 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028244 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070028245 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028246 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070028247
Jeff Johnsone7245742012-09-05 17:12:55 -070028248 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
28249 wpalMemoryCopy( pSendBuffer+usDataOffset,
28250 &rcvFltPktClearParam,
28251 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070028252
28253 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028254 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028255
28256
28257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028258 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028259 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028260 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028261 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028262 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028263}
28264
28265/**
28266 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028267
28268 @param pWDICtx: pointer to the WLAN DAL context
28269 pEventData: pointer to the event information structure
28270
Jeff Johnson295189b2012-06-20 16:38:30 -070028271 @see
28272 @return Result of the function call
28273*/
28274WDI_Status
28275WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028276(
Jeff Johnson295189b2012-06-20 16:38:30 -070028277 WDI_ControlBlockType* pWDICtx,
28278 WDI_EventInfoType* pEventData
28279)
28280{
Jeff Johnson295189b2012-06-20 16:38:30 -070028281 eHalStatus halStatus;
28282 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028283 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
28284 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28286
28287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028288 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028289
28290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028292 -------------------------------------------------------------------------*/
28293 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28294 ( NULL == pEventData->pEventData ))
28295 {
28296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028300 }
28301
Jeff Johnsone7245742012-09-05 17:12:55 -070028302 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028303
28304 /*-------------------------------------------------------------------------
28305 Extract response and send it to UMAC
28306 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028307 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28308 {
28309 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
28310 pEventData->pEventData,
28311 sizeof(halRcvFltPktSetMcListRsp));
28312
28313 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28314 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28315 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28316 halRcvFltPktSetMcListRsp.bssIdx;
28317 }
28318 else
28319 {
28320 halStatus = *((eHalStatus*)pEventData->pEventData);
28321 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28322 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028323
28324 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028325 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028326
Jeff Johnsone7245742012-09-05 17:12:55 -070028327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028328}
28329
28330/**
28331 @brief Process Set Rsp function (called when a
28332 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028333
28334 @param pWDICtx: pointer to the WLAN DAL context
28335 pEventData: pointer to the event information structure
28336
Jeff Johnson295189b2012-06-20 16:38:30 -070028337 @see
28338 @return Result of the function call
28339*/
28340WDI_Status
28341WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028342(
Jeff Johnson295189b2012-06-20 16:38:30 -070028343 WDI_ControlBlockType* pWDICtx,
28344 WDI_EventInfoType* pEventData
28345)
28346{
Jeff Johnson295189b2012-06-20 16:38:30 -070028347 eHalStatus halStatus;
28348 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028349 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28350 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28352
28353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028354 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028355
28356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028358 -------------------------------------------------------------------------*/
28359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28360 ( NULL == pEventData->pEventData ))
28361 {
28362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028366 }
28367
28368 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028369 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028370
28371 /*-------------------------------------------------------------------------
28372 Extract response and send it to UMAC
28373 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028374 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28375 {
28376 wpalMemoryCopy( &halSetPktFilterRspParams,
28377 pEventData->pEventData,
28378 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028379
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028380 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28381 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28382 }
28383 else
28384 {
28385 halStatus = *((eHalStatus*)pEventData->pEventData);
28386 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28387 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028388 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028389 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028390
Jeff Johnsone7245742012-09-05 17:12:55 -070028391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028392}
28393
28394/**
28395 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028396
28397 @param pWDICtx: pointer to the WLAN DAL context
28398 pEventData: pointer to the event information structure
28399
Jeff Johnson295189b2012-06-20 16:38:30 -070028400 @see
28401 @return Result of the function call
28402*/
28403WDI_Status
28404WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028405(
Jeff Johnson295189b2012-06-20 16:38:30 -070028406 WDI_ControlBlockType* pWDICtx,
28407 WDI_EventInfoType* pEventData
28408)
28409{
Jeff Johnson295189b2012-06-20 16:38:30 -070028410 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028411 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028412 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28413 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028414
28415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28416
28417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028418 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028419
28420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028422 -------------------------------------------------------------------------*/
28423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28424 ( NULL == pEventData->pEventData ))
28425 {
28426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028430 }
28431
Jeff Johnsone7245742012-09-05 17:12:55 -070028432 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028433
28434 /*-------------------------------------------------------------------------
28435 Extract response and send it to UMAC
28436 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028437 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28438 {
28439 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28440 pEventData->pEventData,
28441 sizeof(halRcvFltrPktMatachRsp));
28442
28443 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28444 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28445 }
28446 else
28447 {
28448 halStatus = *((eHalStatus*)pEventData->pEventData);
28449 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28450 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028451
28452 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028453 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028454
Jeff Johnsone7245742012-09-05 17:12:55 -070028455 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028456}
28457
28458/**
28459 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028460
28461 @param pWDICtx: pointer to the WLAN DAL context
28462 pEventData: pointer to the event information structure
28463
Jeff Johnson295189b2012-06-20 16:38:30 -070028464 @see
28465 @return Result of the function call
28466*/
28467WDI_Status
28468WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028469(
Jeff Johnson295189b2012-06-20 16:38:30 -070028470 WDI_ControlBlockType* pWDICtx,
28471 WDI_EventInfoType* pEventData
28472)
28473{
Jeff Johnson295189b2012-06-20 16:38:30 -070028474 eHalStatus halStatus;
28475 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028476 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28477 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28479
28480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028481 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028482
28483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028485 -------------------------------------------------------------------------*/
28486 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28487 ( NULL == pEventData->pEventData ))
28488 {
28489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028493 }
28494
28495 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028496 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028497
28498 /*-------------------------------------------------------------------------
28499 Extract response and send it to UMAC
28500 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028501 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28502 {
28503 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28504 pEventData->pEventData,
28505 sizeof(halRcvFltPktClearRspMsg));
28506
28507 wdiRcvFltPktClearRspParamsType.wdiStatus =
28508 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28509 wdiRcvFltPktClearRspParamsType.bssIdx =
28510 halRcvFltPktClearRspMsg.bssIdx;
28511 }
28512 else
28513 {
28514 halStatus = *((eHalStatus*)pEventData->pEventData);
28515 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28516 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028517
28518 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028519 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028520
Jeff Johnsone7245742012-09-05 17:12:55 -070028521 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028522}
28523#endif // WLAN_FEATURE_PACKET_FILTERING
28524
28525/**
28526 @brief Process Shutdown Rsp function
28527 There is no shutdown response comming from HAL
28528 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028529
Jeff Johnson295189b2012-06-20 16:38:30 -070028530 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028531 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028532
28533 @see
28534 @return Result of the function call
28535*/
28536WDI_Status
28537WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028538(
Jeff Johnson295189b2012-06-20 16:38:30 -070028539 WDI_ControlBlockType* pWDICtx,
28540 WDI_EventInfoType* pEventData
28541)
28542{
28543 /*There is no shutdown response comming from HAL - function just kept for
28544 simmetry */
28545 WDI_ASSERT(0);
28546 return WDI_STATUS_SUCCESS;
28547}/*WDI_ProcessShutdownRsp*/
28548
28549/**
28550 @brief WDI_SetPowerParamsReq
28551
Jeff Johnsone7245742012-09-05 17:12:55 -070028552 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028553 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028554
Jeff Johnson295189b2012-06-20 16:38:30 -070028555 wdiPowerParamsCb: callback for passing back the response
28556 of the Set Power Params operation received from the
28557 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028558
Jeff Johnson295189b2012-06-20 16:38:30 -070028559 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028560 callback
28561
Jeff Johnson295189b2012-06-20 16:38:30 -070028562 @return Result of the function call
28563*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028564WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028565WDI_SetPowerParamsReq
28566(
28567 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28568 WDI_SetPowerParamsCb wdiPowerParamsCb,
28569 void* pUserData
28570)
28571{
28572 WDI_EventInfoType wdiEventData;
28573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28574
28575 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028576 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028577 ------------------------------------------------------------------------*/
28578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28579 {
28580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28581 "WDI API call before module is initialized - Fail request");
28582
Jeff Johnsone7245742012-09-05 17:12:55 -070028583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028584 }
28585
28586 /*------------------------------------------------------------------------
28587 Fill in Event data and post to the Main FSM
28588 ------------------------------------------------------------------------*/
28589 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028590 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028591 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028592 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028593 wdiEventData.pUserData = pUserData;
28594
28595 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28596}/*WDI_SetPowerParamsReq*/
28597
28598/**
28599 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028600
28601 @param pWDICtx: pointer to the WLAN DAL context
28602 pEventData: pointer to the event information structure
28603
Jeff Johnson295189b2012-06-20 16:38:30 -070028604 @see
28605 @return Result of the function call
28606*/
28607WDI_Status
28608WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028609(
Jeff Johnson295189b2012-06-20 16:38:30 -070028610 WDI_ControlBlockType* pWDICtx,
28611 WDI_EventInfoType* pEventData
28612)
28613{
28614 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28615 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028616 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028617 wpt_uint16 usDataOffset = 0;
28618 wpt_uint16 usSendSize = 0;
28619 tSetPowerParamsType powerParams;
28620
28621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028623 -------------------------------------------------------------------------*/
28624 if (( NULL == pEventData ) ||
28625 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28626 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28627 {
28628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028632 }
28633
28634 /*-----------------------------------------------------------------------
28635 Get message buffer
28636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028638 sizeof(powerParams),
28639 &pSendBuffer, &usDataOffset, &usSendSize))||
28640 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28641 {
28642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028643 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028644 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028647 }
28648
28649 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028650 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028651 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28652
28653 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028654 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028655 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28656
28657 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028658 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028659 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28660
28661 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028662 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028663 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28664
28665 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028666 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028667 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28668
28669 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028670 powerParams.uBETInterval =
28671 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028672
Yue Mac24062f2013-05-13 17:01:29 -070028673 /* MAX LI for modulated DTIM */
28674 powerParams.uMaxLIModulatedDTIM =
28675 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028676
28677 wpalMemoryCopy( pSendBuffer+usDataOffset,
28678 &powerParams,
28679 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028680
28681 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028682 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028683
28684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028685 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028687 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28688 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028689}
28690
28691/**
28692 @brief Process Power Params Rsp function (called when a
28693 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028694
28695 @param pWDICtx: pointer to the WLAN DAL context
28696 pEventData: pointer to the event information structure
28697
Jeff Johnson295189b2012-06-20 16:38:30 -070028698 @see
28699 @return Result of the function call
28700*/
28701WDI_Status
28702WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028703(
Jeff Johnson295189b2012-06-20 16:38:30 -070028704 WDI_ControlBlockType* pWDICtx,
28705 WDI_EventInfoType* pEventData
28706)
28707{
28708 WDI_Status wdiStatus;
28709 eHalStatus halStatus;
28710 WDI_SetPowerParamsCb wdiPowerParamsCb;
28711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28712
28713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028715 -------------------------------------------------------------------------*/
28716 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28717 ( NULL == pEventData->pEventData ))
28718 {
28719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028723 }
28724
Jeff Johnsone7245742012-09-05 17:12:55 -070028725 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028726
28727 /*-------------------------------------------------------------------------
28728 Extract response and send it to UMAC
28729 -------------------------------------------------------------------------*/
28730 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028731 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028732
28733 /*Notify UMAC*/
28734 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28735
Jeff Johnsone7245742012-09-05 17:12:55 -070028736 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028737}/*WDI_ProcessSetPowerParamsRsp*/
28738
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028739/**
28740 @brief WDI_dhcpStartInd
28741 Host will send an event to the FW when DHCP is initiated
28742
28743 @param
28744 WDI_DHCPInd: DHCP Indication
28745 @see
28746 @return Result of the function call
28747*/
28748WDI_Status
28749WDI_dhcpStartInd
28750(
28751 WDI_DHCPInd *wdiDHCPInd
28752)
28753{
28754 WDI_EventInfoType wdiEventData;
28755
28756 /*------------------------------------------------------------------------
28757 Sanity Check
28758 ------------------------------------------------------------------------*/
28759 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28760 {
28761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28762 "WDI API call before module is initialized - Fail request");
28763
28764 return WDI_STATUS_E_NOT_ALLOWED;
28765 }
28766
28767 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28768 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028769 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028770 wdiEventData.pCBfnc = NULL;
28771 wdiEventData.pUserData = NULL;
28772
28773 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28774}
28775
28776
28777/**
28778 @brief WDI_dhcpStopInd
28779 Host will send an event to the FW when DHCP is completed
28780
28781 @param
28782 WDI_DHCPInd: DHCP Indication
28783 @see
28784 @return Result of the function call
28785*/
28786WDI_Status
28787WDI_dhcpStopInd
28788(
28789 WDI_DHCPInd *wdiDHCPInd
28790)
28791{
28792 WDI_EventInfoType wdiEventData;
28793
28794 /*------------------------------------------------------------------------
28795 Sanity Check
28796 ------------------------------------------------------------------------*/
28797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28798 {
28799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28800 "WDI API call before module is initialized - Fail request");
28801
28802 return WDI_STATUS_E_NOT_ALLOWED;
28803 }
28804
28805 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28806 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028807 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028808 wdiEventData.pCBfnc = NULL;
28809 wdiEventData.pUserData = NULL;
28810
28811 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28812}
28813
28814
28815/**
28816 @brief Process DHCP Start Indication message and post it to HAL
28817
28818 @param pWDICtx: pointer to the WLAN DAL context
28819 pEventData: pointer to the event information structure
28820
28821 @see
28822 @return Result of the function call
28823*/
28824WDI_Status
28825WDI_ProcessDHCPStartInd
28826(
28827 WDI_ControlBlockType* pWDICtx,
28828 WDI_EventInfoType* pEventData
28829)
28830{
28831 wpt_uint8* pSendBuffer = NULL;
28832 wpt_uint16 usDataOffset = 0;
28833 wpt_uint16 usSendSize = 0;
28834 wpt_uint16 usLen = 0;
28835 WDI_DHCPInd* pwdiDHCPInd = NULL;
28836 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028837 WDI_Status wdiStatus;
28838
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028839
28840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28841
28842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28843 "%s", __func__);
28844
28845 /*-------------------------------------------------------------------------
28846 Sanity check
28847 -------------------------------------------------------------------------*/
28848 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28849 {
28850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28851 "%s: Invalid parameters", __func__);
28852 WDI_ASSERT(0);
28853 return WDI_STATUS_E_FAILURE;
28854 }
28855 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28856 /*-----------------------------------------------------------------------
28857 Get message buffer
28858 -----------------------------------------------------------------------*/
28859
28860 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28861 WDI_DHCP_START_IND,
28862 sizeof(tDHCPInfo),
28863 &pSendBuffer, &usDataOffset, &usSendSize))||
28864 ( usSendSize < (usDataOffset + usLen )))
28865 {
28866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28867 "Unable to get send buffer in DHCP Start req %p ",
28868 pEventData);
28869 WDI_ASSERT(0);
28870 return WDI_STATUS_E_FAILURE;
28871 }
28872
Sandeep Puligillaee789512014-02-13 19:14:52 +053028873 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028874 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28875 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28876 WDI_MAC_ADDR_LEN);
28877
28878 pWDICtx->pReqStatusUserData = NULL;
28879 pWDICtx->pfncRspCB = NULL;
28880
28881 /*-------------------------------------------------------------------------
28882 Send DHCP Start Indication to HAL
28883 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028884 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28885 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028886}/*WDI_ProcessDHCPStartInd*/
28887
28888/**
28889 @brief Process DHCP Stop indication message and post it to HAL
28890
28891 @param pWDICtx: pointer to the WLAN DAL context
28892 pEventData: pointer to the event information structure
28893
28894 @see
28895 @return Result of the function call
28896*/
28897WDI_Status
28898WDI_ProcessDHCPStopInd
28899(
28900 WDI_ControlBlockType* pWDICtx,
28901 WDI_EventInfoType* pEventData
28902)
28903{
28904 wpt_uint8* pSendBuffer = NULL;
28905 wpt_uint16 usDataOffset = 0;
28906 wpt_uint16 usSendSize = 0;
28907 wpt_uint16 usLen = 0;
28908 WDI_DHCPInd* pwdiDHCPInd = NULL;
28909 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028910 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028911
28912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28913
28914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28915 "%s", __func__);
28916
28917 /*-------------------------------------------------------------------------
28918 Sanity check
28919 -------------------------------------------------------------------------*/
28920
28921 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28922 {
28923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28924 "%s: Invalid parameters", __func__);
28925 WDI_ASSERT(0);
28926 return WDI_STATUS_E_FAILURE;
28927 }
28928 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28929 /*-----------------------------------------------------------------------
28930 Get message buffer
28931 -----------------------------------------------------------------------*/
28932
28933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28934 WDI_DHCP_STOP_IND,
28935 sizeof(tDHCPInfo),
28936 &pSendBuffer, &usDataOffset, &usSendSize))||
28937 ( usSendSize < (usDataOffset + usLen )))
28938 {
28939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28940 "Unable to get send buffer in DHCP Start req %p ",
28941 pEventData);
28942 WDI_ASSERT(0);
28943 return WDI_STATUS_E_FAILURE;
28944 }
28945
Sandeep Puligillaee789512014-02-13 19:14:52 +053028946 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028947 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28948 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28949 WDI_MAC_ADDR_LEN);
28950
28951 pWDICtx->pReqStatusUserData = NULL;
28952 pWDICtx->pfncRspCB = NULL;
28953 /*-------------------------------------------------------------------------
28954 Send DHCP Stop indication to HAL
28955 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028956 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28957 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028958
28959}/*WDI_ProcessDHCPStopInd*/
28960
28961
Jeff Johnson295189b2012-06-20 16:38:30 -070028962#ifdef WLAN_FEATURE_GTK_OFFLOAD
28963/**
28964 @brief WDI_GTKOffloadReq will be called when the upper MAC
28965 wants to set GTK Rekey Counter while in power save. Upon
28966 the call of this API the WLAN DAL will pack and send a
28967 HAL GTK offload request message to the lower RIVA
28968 sub-system if DAL is in state STARTED.
28969
28970 In state BUSY this request will be queued. Request won't
28971 be allowed in any other state.
28972
28973 WDI_PostAssocReq must have been called.
28974
28975 @param pwdiGtkOffloadParams: the GTK offload as specified
28976 by the Device Interface
28977
28978 wdiGtkOffloadCb: callback for passing back the response
28979 of the GTK offload operation received from the device
28980
28981 pUserData: user data will be passed back with the
28982 callback
28983
28984 @see WDI_PostAssocReq
28985 @return Result of the function call
28986*/
28987WDI_Status
28988WDI_GTKOffloadReq
28989(
28990 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28991 WDI_GtkOffloadCb wdiGtkOffloadCb,
28992 void* pUserData
28993)
28994{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028995 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28997
28998 /*------------------------------------------------------------------------
28999 Sanity Check
29000 ------------------------------------------------------------------------*/
29001 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29002 {
29003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29004 "WDI API call before module is initialized - Fail request");
29005
29006 return WDI_STATUS_E_NOT_ALLOWED;
29007 }
29008
29009 /*------------------------------------------------------------------------
29010 Fill in Event data and post to the Main FSM
29011 ------------------------------------------------------------------------*/
29012 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
29013 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070029014 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070029015 wdiEventData.pCBfnc = wdiGtkOffloadCb;
29016 wdiEventData.pUserData = pUserData;
29017
29018 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29019}
29020
29021
29022/**
29023 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
29024 MAC wants to get GTK Rekey Counter while in power save.
29025 Upon the call of this API the WLAN DAL will pack and
29026 send a HAL GTK offload request message to the lower RIVA
29027 sub-system if DAL is in state STARTED.
29028
29029 In state BUSY this request will be queued. Request won't
29030 be allowed in any other state.
29031
29032 WDI_PostAssocReq must have been called.
29033
29034 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
29035 Information Message as specified by the
29036 Device Interface
29037
29038 wdiGtkOffloadGetInfoCb: callback for passing back the
29039 response of the GTK offload operation received from the
29040 device
29041
29042 pUserData: user data will be passed back with the
29043 callback
29044
29045 @see WDI_PostAssocReq
29046 @return Result of the function call
29047*/
29048WDI_Status
29049WDI_GTKOffloadGetInfoReq
29050(
29051 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
29052 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
29053 void* pUserData
29054)
29055{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029056 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29058
29059 /*------------------------------------------------------------------------
29060 Sanity Check
29061 ------------------------------------------------------------------------*/
29062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29063 {
29064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29065 "WDI API call before module is initialized - Fail request");
29066
29067 return WDI_STATUS_E_NOT_ALLOWED;
29068 }
29069
29070 /*------------------------------------------------------------------------
29071 Fill in Event data and post to the Main FSM
29072 ------------------------------------------------------------------------*/
29073 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
29074 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
29075 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
29076 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
29077 wdiEventData.pUserData = pUserData;
29078
29079 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29080}
29081
29082
29083/**
29084 @brief Process set GTK Offload Request function
29085
29086 @param pWDICtx: pointer to the WLAN DAL context
29087 pEventData: pointer to the event information structure
29088
29089 @see
29090 @return Result of the function call
29091*/
29092WDI_Status
29093WDI_ProcessGTKOffloadReq
29094(
29095 WDI_ControlBlockType* pWDICtx,
29096 WDI_EventInfoType* pEventData
29097)
29098{
29099 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
29100 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
29101 wpt_uint8* pSendBuffer = NULL;
29102 wpt_uint16 usDataOffset = 0;
29103 wpt_uint16 usSendSize = 0;
29104 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029105 wpt_uint8 ucCurrentSessionId = 0;
29106 WDI_BSSSessionType* pBSSSes = NULL;
29107
Jeff Johnson295189b2012-06-20 16:38:30 -070029108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29109
29110 /*-------------------------------------------------------------------------
29111 Sanity check
29112 -------------------------------------------------------------------------*/
29113 if (( NULL == pEventData ) ||
29114 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
29115 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
29116 {
29117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029119 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029120 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029121 }
29122
29123 /*-----------------------------------------------------------------------
29124 Get message buffer
29125 -----------------------------------------------------------------------*/
29126 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
29127 sizeof(gtkOffloadReqParams),
29128 &pSendBuffer, &usDataOffset, &usSendSize))||
29129 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
29130 {
29131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029132 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029133 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
29134 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029135 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029136 }
29137
29138 //
29139 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
29140 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029141 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29142 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
29143 &pBSSSes);
29144 if ( NULL == pBSSSes )
29145 {
29146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029147 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029148 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029149 }
29150
29151 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
29152
Jeff Johnson295189b2012-06-20 16:38:30 -070029153 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
29154 // Copy KCK
29155 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
29156 // Copy KEK
29157 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
29158 // Copy KeyReplayCounter
29159 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
29160
29161 wpalMemoryCopy( pSendBuffer+usDataOffset,
29162 &gtkOffloadReqParams,
29163 sizeof(gtkOffloadReqParams));
29164
29165 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
29166 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
29167
29168 /*-------------------------------------------------------------------------
29169 Send Get STA Request to HAL
29170 -------------------------------------------------------------------------*/
29171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29172 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029173
29174fail:
29175 // Release the message buffer so we don't leak
29176 wpalMemoryFree(pSendBuffer);
29177
29178failRequest:
29179 //WDA should have failure check to avoid the memory leak
29180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029181}
29182
29183
29184/**
29185 @brief Process GTK Offload Get Information Request function
29186
29187 @param pWDICtx: pointer to the WLAN DAL context
29188 pEventData: pointer to the event information structure
29189
29190 @see
29191 @return Result of the function call
29192*/
29193WDI_Status
29194WDI_ProcessGTKOffloadGetInfoReq
29195(
29196 WDI_ControlBlockType* pWDICtx,
29197 WDI_EventInfoType* pEventData
29198)
29199{
29200 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
29201 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
29202 wpt_uint8* pSendBuffer = NULL;
29203 wpt_uint16 usDataOffset = 0;
29204 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029205 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
29206 wpt_uint8 ucCurrentSessionId = 0;
29207 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029208
29209 /*-------------------------------------------------------------------------
29210 Sanity check
29211 -------------------------------------------------------------------------*/
29212 if (( NULL == pEventData ) ||
29213 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
29214 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
29215 {
29216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029217 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029218 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029219 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029220 }
29221
29222 /*-----------------------------------------------------------------------
29223 Get message buffer
29224 -----------------------------------------------------------------------*/
29225 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029226 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029227 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029228 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029229 {
29230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029231 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029232 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
29233 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029234 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029235 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029236 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29237 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
29238 &pBSSSes);
29239 if ( NULL == pBSSSes )
29240 {
29241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029242 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029243 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029244 }
29245 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070029246
29247 //
29248 // Don't need to fill send buffer other than header
29249 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029250 wpalMemoryCopy( pSendBuffer+usDataOffset,
29251 &halGtkOffloadGetInfoReqParams,
29252 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029253
29254 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
29255 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
29256
29257 /*-------------------------------------------------------------------------
29258 Send Get STA Request to HAL
29259 -------------------------------------------------------------------------*/
29260 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29261 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029262fail:
29263 // Release the message buffer so we don't leak
29264 wpalMemoryFree(pSendBuffer);
29265
29266failRequest:
29267 //WDA should have failure check to avoid the memory leak
29268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029269}
29270
29271/**
29272 @brief Process host offload Rsp function (called when a
29273 response is being received over the bus from HAL)
29274
29275 @param pWDICtx: pointer to the WLAN DAL context
29276 pEventData: pointer to the event information structure
29277
29278 @see
29279 @return Result of the function call
29280*/
29281WDI_Status
29282WDI_ProcessGtkOffloadRsp
29283(
29284 WDI_ControlBlockType* pWDICtx,
29285 WDI_EventInfoType* pEventData
29286)
29287{
Jeff Johnson295189b2012-06-20 16:38:30 -070029288 eHalStatus halStatus;
29289 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029290 tHalGtkOffloadRspParams halGtkOffloadRspParams;
29291 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029292
29293 /*-------------------------------------------------------------------------
29294 Sanity check
29295 -------------------------------------------------------------------------*/
29296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29297 ( NULL == pEventData->pEventData))
29298 {
29299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029301 WDI_ASSERT(0);
29302 return WDI_STATUS_E_FAILURE;
29303 }
29304
Wilson Yang00256342013-10-10 23:13:38 -070029305 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
29306
Jeff Johnson295189b2012-06-20 16:38:30 -070029307 /*-------------------------------------------------------------------------
29308 Extract response and send it to UMAC
29309 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029310 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29311 {
29312 wpalMemoryCopy( &halGtkOffloadRspParams,
29313 pEventData->pEventData,
29314 sizeof(halGtkOffloadRspParams));
29315
29316 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029317 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029318 wdiGtkOffloadRsparams.bssIdx =
29319 halGtkOffloadRspParams.bssIdx;
29320 }
29321 else
29322 {
29323 halStatus = *((eHalStatus*)pEventData->pEventData);
29324 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29325 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029326
29327 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029328 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029329
29330 return WDI_STATUS_SUCCESS;
29331}
29332
29333/**
29334 @brief Process GTK Offload Get Information Response function
29335
29336 @param pWDICtx: pointer to the WLAN DAL context
29337 pEventData: pointer to the event information structure
29338
29339 @see
29340 @return Result of the function call
29341*/
29342WDI_Status
29343WDI_ProcessGTKOffloadGetInfoRsp
29344(
29345 WDI_ControlBlockType* pWDICtx,
29346 WDI_EventInfoType* pEventData
29347)
29348{
Jeff Johnson295189b2012-06-20 16:38:30 -070029349 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029350 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029351 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29352 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029353 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029354
Jeff Johnson295189b2012-06-20 16:38:30 -070029355
29356 /*-------------------------------------------------------------------------
29357 Sanity check
29358 -------------------------------------------------------------------------*/
29359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29360 ( NULL == pEventData->pEventData ))
29361 {
29362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029364 WDI_ASSERT(0);
29365 return WDI_STATUS_E_FAILURE;
29366 }
29367
Wilson Yang00256342013-10-10 23:13:38 -070029368 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29369
29370 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029371 Extract response and send it to UMAC
29372 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029373 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29374 {
29375 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29376 pEventData->pEventData,
29377 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029378
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029379 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029380 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029381 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29382 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29383 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29384 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29385 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29386 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29387 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29388 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029389
29390 wpalMutexAcquire(&pWDICtx->wptMutex);
29391 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29392 &pBSSSes);
29393
29394 if ( NULL == pBSSSes )
29395 {
29396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29397 "Association sequence for this BSS does not exist or "
29398 "association no longer in progress - mysterious HAL response");
29399 wpalMutexRelease(&pWDICtx->wptMutex);
29400 return WDI_STATUS_E_NOT_ALLOWED;
29401 }
29402
29403 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29404 sizeof (wpt_macAddr));
29405 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029406 }
29407 else
29408 {
29409 halStatus = *((eHalStatus*)pEventData->pEventData);
29410 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29411 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029412 /*Notify UMAC*/
29413 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29414 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029415 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029416
29417 return WDI_STATUS_SUCCESS;
29418}
29419#endif // WLAN_FEATURE_GTK_OFFLOAD
29420
29421#ifdef WLAN_WAKEUP_EVENTS
29422WDI_Status
29423WDI_ProcessWakeReasonInd
29424(
29425 WDI_ControlBlockType* pWDICtx,
29426 WDI_EventInfoType* pEventData
29427)
29428{
29429 WDI_LowLevelIndType *pWdiInd;
29430 tpWakeReasonParams pWakeReasonParams;
29431 wpt_uint32 allocSize = 0;
29432
29433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029434 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029435
29436 /*-------------------------------------------------------------------------
29437 Sanity check
29438 -------------------------------------------------------------------------*/
29439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29440 ( NULL == pEventData->pEventData ))
29441 {
29442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029444 WDI_ASSERT( 0 );
29445 return WDI_STATUS_E_FAILURE;
29446 }
29447
29448 /*-------------------------------------------------------------------------
29449 Extract indication and send it to UMAC
29450 -------------------------------------------------------------------------*/
29451 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29452
29453 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29454
29455 //Allocate memory for WDI_WakeReasonIndType structure
29456 pWdiInd = wpalMemoryAllocate(allocSize) ;
29457
29458 if(NULL == pWdiInd)
29459 {
29460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029461 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029462 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029463 WDI_ASSERT(0);
29464 return WDI_STATUS_E_FAILURE;
29465 }
29466
29467 wpalMemoryZero(pWdiInd, allocSize);
29468
29469 /* Fill in the indication parameters*/
29470 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29471 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29472 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29473 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29474 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29475 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29476 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29477 &(pWakeReasonParams->aDataStart[0]),
29478 pWakeReasonParams->ulStoredDataLen);
29479
ltimariub77f24b2013-01-24 18:54:33 -080029480
29481 if ( pWDICtx->wdiLowLevelIndCB )
29482 {
29483 /*Notify UMAC*/
29484 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29485 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029486
29487 //Free memory allocated for WDI_WakeReasonIndType structure
29488 wpalMemoryFree(pWdiInd);
29489
29490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029491 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029492
29493 return WDI_STATUS_SUCCESS;
29494}
29495#endif // WLAN_WAKEUP_EVENTS
29496
29497void WDI_GetWcnssCompiledApiVersion
29498(
29499 WDI_WlanVersionType *pWcnssApiVersion
29500)
29501{
29502 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29503 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29504 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29505 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29506}
29507
29508/**
29509 @brief Process Set TM Level Rsp function (called when a
29510 response is being received over the bus from HAL)
29511
29512 @param pWDICtx: pointer to the WLAN DAL context
29513 pEventData: pointer to the event information structure
29514
29515 @see
29516 @return Result of the function call
29517*/
29518WDI_Status
29519WDI_ProcessSetTmLevelRsp
29520(
29521 WDI_ControlBlockType* pWDICtx,
29522 WDI_EventInfoType* pEventData
29523)
29524{
29525 WDI_Status wdiStatus;
29526 eHalStatus halStatus;
29527 WDI_SetTmLevelCb wdiSetTmLevelCb;
29528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29529
29530 /*-------------------------------------------------------------------------
29531 Sanity check
29532 -------------------------------------------------------------------------*/
29533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29534 ( NULL == pEventData->pEventData ))
29535 {
29536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029538 WDI_ASSERT(0);
29539 return WDI_STATUS_E_FAILURE;
29540 }
29541
29542 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29543
29544 /*-------------------------------------------------------------------------
29545 Extract response and send it to UMAC
29546 -------------------------------------------------------------------------*/
29547 halStatus = *((eHalStatus*)pEventData->pEventData);
29548 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29549
29550 /*Notify UMAC*/
29551 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29552
29553 return WDI_STATUS_SUCCESS;
29554}/*WDI_ProcessSetTmLevelRsp*/
29555
29556/**
29557 @brief Process Set Thermal Mitigation level Changed request
29558
29559 @param pWDICtx: pointer to the WLAN DAL context
29560 pEventData: pointer to the event information structure
29561
29562 @see
29563 @return Result of the function call
29564*/
29565WDI_Status
29566WDI_ProcessSetTmLevelReq
29567(
29568 WDI_ControlBlockType* pWDICtx,
29569 WDI_EventInfoType* pEventData
29570)
29571{
29572 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29573 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29574 wpt_uint8* pSendBuffer = NULL;
29575 wpt_uint16 usDataOffset = 0;
29576 wpt_uint16 usSendSize = 0;
29577 tSetThermalMitgationType halTmMsg;
29578
29579 /*-------------------------------------------------------------------------
29580 Sanity check
29581 -------------------------------------------------------------------------*/
29582 if (( NULL == pEventData ) ||
29583 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29584 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29585 {
29586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029588 WDI_ASSERT(0);
29589 return WDI_STATUS_E_FAILURE;
29590 }
29591
29592 /*-----------------------------------------------------------------------
29593 Get message buffer
29594 -----------------------------------------------------------------------*/
29595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29596 sizeof(halTmMsg),
29597 &pSendBuffer, &usDataOffset, &usSendSize))||
29598 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29599 {
29600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029601 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029602 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29603 WDI_ASSERT(0);
29604 return WDI_STATUS_E_FAILURE;
29605 }
29606
29607 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29608 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29609
29610 wpalMemoryCopy( pSendBuffer+usDataOffset,
29611 &halTmMsg,
29612 sizeof(halTmMsg));
29613
29614 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29615 pWDICtx->pfncRspCB = NULL;
29616 /*-------------------------------------------------------------------------
29617 Send Get STA Request to HAL
29618 -------------------------------------------------------------------------*/
29619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29620 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29621}
29622
29623/* Fill the value from the global features enabled array to the global capabilities
29624 * bitmap struct
29625 */
29626static void
29627FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29628{
29629 wpt_int8 i;
29630 for (i=0; i<len; i++)
29631 {
29632 setFeatCaps(fCaps, enabledFeat[i]);
29633 }
29634}
29635
29636/**
29637 @brief WDI_featureCapsExchangeReq
29638 Post feature capability bitmap exchange event.
29639 Host will send its own capability to FW in this req and
29640 expect FW to send its capability back as a bitmap in Response
29641
29642 @param
29643
29644 wdiFeatureCapsExchangeCb: callback called on getting the response.
29645 It is kept to mantain similarity between WDI reqs and if needed, can
29646 be used in future. Currently, It is set to NULL
29647
29648 pUserData: user data will be passed back with the
29649 callback
29650
29651 @see
29652 @return Result of the function call
29653*/
29654WDI_Status
29655WDI_featureCapsExchangeReq
29656(
29657 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29658 void* pUserData
29659)
29660{
29661 WDI_EventInfoType wdiEventData;
29662 wpt_int32 fCapsStructSize;
29663
29664 /*------------------------------------------------------------------------
29665 Sanity Check
29666 ------------------------------------------------------------------------*/
29667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29668 {
29669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29670 "WDI API call before module is initialized - Fail request");
29671
29672 return WDI_STATUS_E_NOT_ALLOWED;
29673 }
29674
29675 /* Allocate memory separately for global variable carrying FW caps */
29676 fCapsStructSize = sizeof(tWlanFeatCaps);
29677 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29678 if ( NULL == gpHostWlanFeatCaps )
29679 {
29680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029681 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029682 WDI_ASSERT(0);
29683 return WDI_STATUS_MEM_FAILURE;
29684 }
29685
29686 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29687
29688 /*------------------------------------------------------------------------
29689 Fill in Event data and post to the Main FSM
29690 ------------------------------------------------------------------------*/
29691 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29692 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029694 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029695 gpHostWlanFeatCaps->featCaps[0],
29696 gpHostWlanFeatCaps->featCaps[1],
29697 gpHostWlanFeatCaps->featCaps[2],
29698 gpHostWlanFeatCaps->featCaps[3]
29699 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029701 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029702 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29703 wdiEventData.pEventData = gpHostWlanFeatCaps;
29704 wdiEventData.uEventDataSize = fCapsStructSize;
29705 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29706 wdiEventData.pUserData = pUserData;
29707
29708 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29709}
29710
29711/**
Yathish9f22e662012-12-10 14:21:35 -080029712 @brief Disable Active mode offload in Host
29713
29714 @param void
29715 @see
29716 @return void
29717*/
29718void
29719WDI_disableCapablityFeature(wpt_uint8 feature_index)
29720{
29721 supportEnabledFeatures[feature_index] = 0;
29722 return;
29723}
29724
29725/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029726 @brief Process Host-FW Capability Exchange Request function
29727
29728 @param pWDICtx: pointer to the WLAN DAL context
29729 pEventData: pointer to the event information structure
29730
29731 @see
29732 @return Result of the function call
29733*/
29734WDI_Status
29735WDI_ProcessFeatureCapsExchangeReq
29736(
29737 WDI_ControlBlockType* pWDICtx,
29738 WDI_EventInfoType* pEventData
29739)
29740{
29741 wpt_uint8* pSendBuffer = NULL;
29742 wpt_uint16 usDataOffset = 0;
29743 wpt_uint16 usSendSize = 0;
29744 wpt_uint16 usLen = 0;
29745
29746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29747
29748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029749 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029750
29751 /*-------------------------------------------------------------------------
29752 Sanity check
29753 -------------------------------------------------------------------------*/
29754 /* Call back function is NULL since not required for cap exchange req */
29755 if (( NULL == pEventData ) ||
29756 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29757 {
29758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029760 WDI_ASSERT(0);
29761 return WDI_STATUS_E_FAILURE;
29762 }
29763
29764 /*-----------------------------------------------------------------------
29765 Get message buffer
29766 -----------------------------------------------------------------------*/
29767 usLen = sizeof(tWlanFeatCaps);
29768
29769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29770 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29771 usLen,
29772 &pSendBuffer, &usDataOffset, &usSendSize))||
29773 ( usSendSize < (usDataOffset + usLen )))
29774 {
29775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029776 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029777 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29778 WDI_ASSERT(0);
29779 return WDI_STATUS_E_FAILURE;
29780 }
29781
29782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029783 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029784 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29785 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29786 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29787 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29788 );
29789
29790 /* Copy host caps after the offset in the send buffer */
29791 wpalMemoryCopy( pSendBuffer+usDataOffset,
29792 (tWlanFeatCaps *)pEventData->pEventData,
29793 usLen);
29794
29795 /*-------------------------------------------------------------------------
29796 Send Start Request to HAL
29797 -------------------------------------------------------------------------*/
29798 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29799 (WDI_StartRspCb)pEventData->pCBfnc,
29800 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29801
29802}/*WDI_ProcessFeatureCapsExchangeReq*/
29803
29804/**
29805 @brief Process Host-FW Capability Exchange Response function
29806
29807 @param pWDICtx: pointer to the WLAN DAL context
29808 pEventData: pointer to the event information structure
29809
29810 @see
29811 @return Result of the function call
29812*/
29813WDI_Status
29814WDI_ProcessFeatureCapsExchangeRsp
29815(
29816 WDI_ControlBlockType* pWDICtx,
29817 WDI_EventInfoType* pEventData
29818)
29819{
29820 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29821 wpt_int32 fCapsStructSize;
29822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29823
29824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029825 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029826
29827 /*-------------------------------------------------------------------------
29828 Sanity check
29829 -------------------------------------------------------------------------*/
29830 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29831 ( NULL == pEventData->pEventData ))
29832 {
29833 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029835 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029836 WDI_ASSERT(0);
29837 return WDI_STATUS_E_FAILURE;
29838 }
29839
29840 /* Allocate memory separately for global variable carrying FW caps */
29841 fCapsStructSize = sizeof(tWlanFeatCaps);
29842 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29843 if ( NULL == gpFwWlanFeatCaps )
29844 {
29845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029846 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029847 WDI_ASSERT(0);
29848 return WDI_STATUS_MEM_FAILURE;
29849 }
29850
29851 /*-------------------------------------------------------------------------
29852 Unpack HAL Response Message - the header was already extracted by the
29853 main Response Handling procedure
29854 -------------------------------------------------------------------------*/
29855 /*-------------------------------------------------------------------------
29856 Extract response and send it to UMAC
29857 -------------------------------------------------------------------------*/
29858
29859 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29860 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029862 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029863 gpFwWlanFeatCaps->featCaps[0],
29864 gpFwWlanFeatCaps->featCaps[1],
29865 gpFwWlanFeatCaps->featCaps[2],
29866 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029867 );
Mukul Sharmaf1bd9322015-10-20 16:03:42 +053029868
Ratheesh S P36dbc932015-08-07 14:28:57 +053029869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029870 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029871 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29872
29873 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29874 if (wdiFeatureCapsExchangeCb != NULL)
29875 wdiFeatureCapsExchangeCb(NULL, NULL);
29876
29877 return WDI_STATUS_SUCCESS;
29878}
29879
Mohit Khanna4a70d262012-09-11 16:30:12 -070029880#ifdef WLAN_FEATURE_11AC
29881WDI_Status
29882WDI_ProcessUpdateVHTOpModeRsp
29883(
29884 WDI_ControlBlockType* pWDICtx,
29885 WDI_EventInfoType* pEventData
29886)
29887{
29888 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29889 WDI_Status wdiStatus;
29890 eHalStatus halStatus;
29891
29892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29893
29894 /*-------------------------------------------------------------------------
29895 Sanity check
29896 -------------------------------------------------------------------------*/
29897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29898 ( NULL == pEventData->pEventData))
29899 {
29900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029901 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029902 WDI_ASSERT(0);
29903 return WDI_STATUS_E_FAILURE;
29904 }
29905 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29906
29907 /*-------------------------------------------------------------------------
29908 Extract response and send it to UMAC
29909 -------------------------------------------------------------------------*/
29910 halStatus = *((eHalStatus*)pEventData->pEventData);
29911 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29912
29913 /*Notify UMAC*/
29914 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29915
29916 return WDI_STATUS_SUCCESS;
29917}
29918#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029919/**
29920 @brief WDI_getHostWlanFeatCaps
29921 WDI API that returns whether the feature passed to it as enum value in
29922 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29923 variable storing host capability bitmap to find this. This can be used by
29924 other moduels to decide certain things like call different APIs based on
29925 whether a particular feature is supported.
29926
29927 @param
29928
29929 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29930
29931 @see
29932 @return
29933 0 - if the feature is NOT supported in host
29934 any non-zero value - if the feature is SUPPORTED in host.
29935*/
29936wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29937{
29938 wpt_uint8 featSupported = 0;
29939 if (gpHostWlanFeatCaps != NULL)
29940 {
29941 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29942 }
29943 else
29944 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029946 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029947 }
29948 return featSupported;
29949}
29950
29951/**
29952 @brief WDI_getFwWlanFeatCaps
29953 WDI API that returns whether the feature passed to it as enum value in
29954 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29955 variable storing host capability bitmap to find this. This can be used by
29956 other moduels to decide certain things like call different APIs based on
29957 whether a particular feature is supported.
29958
29959 @param
29960
29961 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29962 in wlan_hal_msg.h.
29963
29964 @see
29965 @return
29966 0 - if the feature is NOT supported in FW
29967 any non-zero value - if the feature is SUPPORTED in FW.
29968*/
29969wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29970{
29971 wpt_uint8 featSupported = 0;
29972 if (gpFwWlanFeatCaps != NULL)
29973 {
29974 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29975 }
29976 else
29977 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029979 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029980 }
29981 return featSupported;
29982}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029983
Katya Nigamf0511f62015-05-05 16:40:57 +053029984wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29985{
29986 /* 5gHz Channel */
29987 if( channel >= 34 && channel <= 165 )
29988 {
29989 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29990 {
29991 if ( channel== 36 || channel == 52 || channel == 100 ||
29992 channel == 116 || channel == 149 )
29993 {
29994 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29995 }
29996 else if ( channel == 40 || channel == 56 || channel == 104 ||
29997 channel == 120 || channel == 153 )
29998 {
29999 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
30000 }
30001 else if ( channel == 44 || channel == 60 || channel == 108 ||
30002 channel == 124 || channel == 157 )
30003 {
30004 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
30005 }
30006 else if ( channel == 48 || channel == 64 || channel == 112 ||
30007 channel == 128 || channel == 144 || channel == 161 )
30008 {
30009 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
30010 }
30011 else if ( channel == 165 )
30012 {
30013 return PHY_SINGLE_CHANNEL_CENTERED;
30014 }
30015 }
30016
30017 else
30018 {
30019 if ( channel== 40 || channel == 48 || channel == 56 ||
30020 channel == 64 || channel == 104 || channel == 112 ||
30021 channel == 120 || channel == 128 || channel == 136 ||
30022 channel == 144 || channel == 153 || channel == 161 )
30023 {
30024 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30025 }
30026 else if ( channel== 36 || channel == 44 || channel == 52 ||
30027 channel == 60 || channel == 100 || channel == 108 ||
30028 channel == 116 || channel == 124 || channel == 132 ||
30029 channel == 140 || channel == 149 || channel == 157 )
30030 {
30031 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30032 }
30033 else if ( channel == 165 )
30034 {
30035 return PHY_SINGLE_CHANNEL_CENTERED;
30036 }
30037 }
30038 }
30039
30040 /* 2.4Ghz Channel */
30041 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
30042 {
30043 if (channel >= 1 && channel <= 7)
30044 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30045 else if (channel >= 8 && channel <= 13)
30046 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30047 else if (channel ==14)
30048 return PHY_SINGLE_CHANNEL_CENTERED;
30049 }
30050 return PHY_SINGLE_CHANNEL_CENTERED;
30051}
30052
Mohit Khanna4a70d262012-09-11 16:30:12 -070030053#ifdef WLAN_FEATURE_11AC
30054WDI_Status
30055WDI_ProcessUpdateVHTOpModeReq
30056(
30057 WDI_ControlBlockType* pWDICtx,
30058 WDI_EventInfoType* pEventData
30059)
30060{
30061 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
30062 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
30063 wpt_uint8* pSendBuffer = NULL;
30064 wpt_uint16 usDataOffset = 0;
30065 wpt_uint16 usSendSize = 0;
30066
30067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30068
30069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030070 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030071
30072 /*-------------------------------------------------------------------------
30073 Sanity check
30074 -------------------------------------------------------------------------*/
30075 if (( NULL == pEventData ) ||
30076 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
30077 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
30078 {
30079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030080 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030081 WDI_ASSERT(0);
30082 return WDI_STATUS_E_FAILURE;
30083 }
30084
30085 /*-----------------------------------------------------------------------
30086 Get message buffer
30087 -----------------------------------------------------------------------*/
30088 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
30089 sizeof(WDI_UpdateVHTOpMode),
30090 &pSendBuffer, &usDataOffset, &usSendSize))||
30091 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
30092 {
30093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30094 "Unable to get send buffer in update vht opMode req");
30095 WDI_ASSERT(0);
30096 return WDI_STATUS_E_FAILURE;
30097 }
30098
30099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030100 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030101
30102 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
30103 sizeof(WDI_UpdateVHTOpMode));
30104
30105 /*-------------------------------------------------------------------------
30106 Send Start Request to HAL
30107 -------------------------------------------------------------------------*/
30108 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30109 wdiVHTOpModeCb,
30110 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
30111
30112}
30113
30114WDI_Status
30115WDI_UpdateVHTOpModeReq
30116(
30117 WDI_UpdateVHTOpMode *pData,
30118 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
30119 void* pUserData
30120)
30121{
30122 WDI_EventInfoType wdiEventData;
30123
30124 /*------------------------------------------------------------------------
30125 Sanity Check
30126 ------------------------------------------------------------------------*/
30127 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30128 {
30129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30130 "WDI API call before module is initialized - Fail request");
30131
30132 return WDI_STATUS_E_NOT_ALLOWED;
30133 }
30134
30135 /*------------------------------------------------------------------------
30136 Fill in Event data and post to the Main FSM
30137 ------------------------------------------------------------------------*/
30138 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
30139 wdiEventData.pEventData = pData;
30140 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
30141 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
30142 wdiEventData.pUserData = pUserData;
30143
30144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030145 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030146
30147 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30148
30149}
30150#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030151
30152/**
30153 @brief WDI_TransportChannelDebug -
30154 Display DXE Channel debugging information
30155 User may request to display DXE channel snapshot
30156 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030157
Jeff Johnsonb88db982012-12-10 13:34:59 -080030158 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053030159 @param debugFlags : Enable stall detect features
30160 defined by WPAL_DeviceDebugFlags
30161 These features may effect
30162 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030163 @see
30164 @return none
30165*/
30166void WDI_TransportChannelDebug
30167(
30168 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053030169 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030170)
30171{
Mihir Shete40a55652014-03-02 14:14:47 +053030172 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030173 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070030174}
Sravan Kumar Kairam6eac7522015-11-27 23:37:02 +053030175
30176/**
30177 @brief WDI_TransportKickDxe -
30178 Request Kick DXE when HDD TX time out happen
30179
30180 @param none
30181 @see
30182 @return none
30183*/
30184void WDI_TransportKickDxe()
30185{
30186 WDTS_ChannelKickDxe();
30187 return;
30188}
30189
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030190/**
30191 @brief WDI_SsrTimerCB
30192 Callback function for SSR timer, if this is called then the graceful
30193 shutdown for Riva did not happen.
30194
30195 @param pUserData : user data to timer
30196
30197 @see
30198 @return none
30199*/
30200void
30201WDI_SsrTimerCB
30202(
30203 void *pUserData
30204)
30205{
30206 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
30207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30208
30209 if (NULL == pWDICtx )
30210 {
30211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030212 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030213 WDI_ASSERT(0);
30214 return;
30215 }
30216 wpalRivaSubystemRestart();
30217
30218 return;
30219
30220}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070030221
30222/**
30223 @brief WDI_SetEnableSSR -
30224 This API is called to enable/disable SSR on WDI timeout.
30225
30226 @param enableSSR : enable/disable SSR
30227
30228 @see
30229 @return none
30230*/
30231void WDI_SetEnableSSR(wpt_boolean enableSSR)
30232{
30233 gWDICb.bEnableSSR = enableSSR;
30234}
Leo Chang9056f462013-08-01 19:21:11 -070030235
30236
30237#ifdef FEATURE_WLAN_LPHB
30238/**
Leo Changd9df8aa2013-09-26 13:32:26 -070030239 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070030240 This function will be invoked when FW detects low power
30241 heart beat failure
30242
30243 @param pWDICtx : wdi context
30244 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070030245 @see
30246 @return Result of the function call
30247*/
30248WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070030249WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070030250(
30251 WDI_ControlBlockType* pWDICtx,
30252 WDI_EventInfoType* pEventData
30253)
30254{
30255 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070030256 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070030257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30258
30259 /*-------------------------------------------------------------------------
30260 Sanity check
30261 -------------------------------------------------------------------------*/
30262 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30263 (NULL == pEventData->pEventData))
30264 {
30265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30266 "%s: Invalid parameters", __func__);
30267 WDI_ASSERT(0);
30268 return WDI_STATUS_E_FAILURE;
30269 }
30270
30271 /*-------------------------------------------------------------------------
30272 Extract indication and send it to UMAC
30273 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070030274 wpalMemoryCopy(&lphbIndicationParam,
30275 pEventData->pEventData,
30276 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070030277
Leo Changd9df8aa2013-09-26 13:32:26 -070030278 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070030279 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030280 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030281 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030282 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030283 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070030284 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070030285 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070030286 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070030287 /*Notify UMAC*/
30288 if (pWDICtx->wdiLowLevelIndCB)
30289 {
30290 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30291 }
30292
30293 return WDI_STATUS_SUCCESS;
30294}
30295
30296/**
30297 @brief WDI_ProcessLphbCfgRsp -
30298 LPHB configuration response from FW
30299
30300 @param pWDICtx : wdi context
30301 pEventData : indication data
30302
30303 @see
30304 @return Result of the function call
30305*/
30306WDI_Status WDI_ProcessLphbCfgRsp
30307(
30308 WDI_ControlBlockType* pWDICtx,
30309 WDI_EventInfoType* pEventData
30310)
30311{
30312 WDI_Status wdiStatus;
30313 eHalStatus halStatus;
30314 WDI_LphbCfgCb wdiLphbCfgCb;
30315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30316
30317 /*-------------------------------------------------------------------------
30318 Sanity check
30319 -------------------------------------------------------------------------*/
30320 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30321 (NULL == pEventData->pEventData))
30322 {
30323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30324 "%s: Invalid parameters", __func__);
30325 WDI_ASSERT(0);
30326 return WDI_STATUS_E_FAILURE;
30327 }
30328
30329 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30330
30331 /*-------------------------------------------------------------------------
30332 Extract response and send it to UMAC
30333 -------------------------------------------------------------------------*/
30334 halStatus = *((eHalStatus*)pEventData->pEventData);
30335 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30336
30337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30338 "LPHB Cfg Rsp Return status %d", wdiStatus);
30339 /*Notify UMAC*/
30340 if (NULL != wdiLphbCfgCb)
30341 {
30342 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30343 }
30344
30345 return WDI_STATUS_SUCCESS;
30346}
30347
30348/**
30349 @brief WDI_ProcessLPHBConfReq -
30350 LPHB configuration request to FW
30351
30352 @param pWDICtx : wdi context
30353 pEventData : indication data
30354
30355 @see
30356 @return none
30357*/
30358WDI_Status WDI_ProcessLPHBConfReq
30359(
30360 WDI_ControlBlockType* pWDICtx,
30361 WDI_EventInfoType* pEventData
30362)
30363{
30364 WDI_LPHBReq *pLphbReqParams;
30365 WDI_Status wdiStatus;
30366 wpt_uint8* pSendBuffer = NULL;
30367 wpt_uint16 usDataOffset = 0;
30368 wpt_uint16 usSendSize = 0;
30369 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30371
30372 /*-------------------------------------------------------------------------
30373 Sanity check
30374 -------------------------------------------------------------------------*/
30375 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30376 {
30377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30378 "%s: Invalid parameters in Suspend ind",__func__);
30379 WDI_ASSERT(0);
30380 return WDI_STATUS_E_FAILURE;
30381 }
30382
30383 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30384
30385 /*-----------------------------------------------------------------------
30386 Get message buffer
30387 -----------------------------------------------------------------------*/
30388 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30389 WDI_LPHB_CFG_REQ,
30390 sizeof(tHalLowPowerHeartBeatReqMsg),
30391 &pSendBuffer, &usDataOffset, &usSendSize))||
30392 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30393 {
30394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30395 "Unable to get send buffer in LPHB Ind ");
30396 WDI_ASSERT(0);
30397 return WDI_STATUS_E_FAILURE;
30398 }
30399
30400 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30401 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30402
30403 halLphbReqRarams->lowPowerHeartBeatCmdType =
30404 (tANI_U16)(++pLphbReqParams->cmd);
30405 switch ((tANI_U16)pLphbReqParams->cmd)
30406 {
30407 case WDI_LPHB_SET_EN_PARAMS_INDID:
30408 halLphbReqRarams->sessionIdx =
30409 pLphbReqParams->params.lphbEnableReq.session;
30410 halLphbReqRarams->options.control.heartBeatEnable =
30411 pLphbReqParams->params.lphbEnableReq.enable;
30412 halLphbReqRarams->options.control.heartBeatType =
30413 pLphbReqParams->params.lphbEnableReq.item;
30414 break;
30415
30416 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30417 halLphbReqRarams->sessionIdx =
30418 pLphbReqParams->params.lphbTcpParamReq.session;
30419 halLphbReqRarams->options.tcpParams.timeOutSec =
30420 pLphbReqParams->params.lphbTcpParamReq.timeout;
30421 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30422 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30423 sizeof(v_U32_t));
30424 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30425 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30426 sizeof(v_U32_t));
30427
30428 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30429 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30430 WDI_MAC_ADDR_LEN);
30431
30432 halLphbReqRarams->options.tcpParams.hostPort =
30433 pLphbReqParams->params.lphbTcpParamReq.src_port;
30434 halLphbReqRarams->options.tcpParams.destPort =
30435 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030436 halLphbReqRarams->options.tcpParams.timePeriodSec =
30437 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30438 halLphbReqRarams->options.tcpParams.tcpSn =
30439 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030440 break;
30441
30442 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30443 halLphbReqRarams->sessionIdx =
30444 pLphbReqParams->params.lphbTcpFilterReq.session;
30445 halLphbReqRarams->options.tcpUdpFilter.offset =
30446 pLphbReqParams->params.lphbTcpFilterReq.offset;
30447 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30448 pLphbReqParams->params.lphbTcpFilterReq.length;
30449 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30450 pLphbReqParams->params.lphbTcpFilterReq.filter,
30451 WDI_LPHB_FILTER_LEN);
30452 break;
30453
30454 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30455 halLphbReqRarams->sessionIdx =
30456 pLphbReqParams->params.lphbUdpParamReq.session;
30457 halLphbReqRarams->options.udpParams.timeOutSec =
30458 pLphbReqParams->params.lphbUdpParamReq.timeout;
30459 halLphbReqRarams->options.udpParams.timePeriodSec =
30460 pLphbReqParams->params.lphbUdpParamReq.interval;
30461 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30462 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30463 sizeof(v_U32_t));
30464 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30465 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30466 sizeof(v_U32_t));
30467
30468 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30469 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30470 WDI_MAC_ADDR_LEN);
30471
30472 halLphbReqRarams->options.udpParams.hostPort =
30473 pLphbReqParams->params.lphbUdpParamReq.src_port;
30474 halLphbReqRarams->options.udpParams.destPort =
30475 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30476 break;
30477
30478 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30479 halLphbReqRarams->sessionIdx =
30480 pLphbReqParams->params.lphbUdpFilterReq.session;
30481 halLphbReqRarams->options.tcpUdpFilter.offset =
30482 pLphbReqParams->params.lphbUdpFilterReq.offset;
30483 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30484 pLphbReqParams->params.lphbUdpFilterReq.length;
30485 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30486 pLphbReqParams->params.lphbUdpFilterReq.filter,
30487 WDI_LPHB_FILTER_LEN);
30488 break;
30489
30490 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30491 /* NA */
30492 break;
30493
30494 default:
30495 break;
30496 }
30497
30498 /*-------------------------------------------------------------------------
30499 Send Suspend Request to HAL
30500 -------------------------------------------------------------------------*/
30501 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30502 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30503
30504 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30505 usSendSize, pWDICtx->pfncRspCB,
30506 pWDICtx->pReqStatusUserData,
30507 WDI_LPHB_CFG_RESP);
30508
30509 return wdiStatus;
30510}
30511
30512/**
30513 @brief WDI_LPHBConfReq -
30514 LPHB configuration request API
30515
30516 @param lphbconfParam : configuration parameter
30517 usrData : client context
30518 lphbCfgCb : callback function pointer
30519
30520 @see
30521 @return Success or fail status code
30522*/
30523WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30524 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30525{
30526 WDI_EventInfoType wdiEventData;
30527
30528 /*------------------------------------------------------------------------
30529 Sanity Check
30530 ------------------------------------------------------------------------*/
30531 if (eWLAN_PAL_FALSE == gWDIInitialized)
30532 {
30533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30534 "WDI API call before module is initialized - Fail request");
30535
30536 return WDI_STATUS_E_NOT_ALLOWED;
30537 }
30538
30539 /*------------------------------------------------------------------------
30540 Fill in Event data and post to the Main FSM
30541 ------------------------------------------------------------------------*/
30542 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30543 wdiEventData.pEventData = lphbconfParam;
30544 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30545 wdiEventData.pCBfnc = lphbCfgCb;
30546 wdiEventData.pUserData = usrData;
30547
30548 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30549}
30550#endif /* FEATURE_WLAN_LPHB */
30551
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030552/**
30553 @brief WDI_ProcessIbssPeerInactivityInd
30554 Process peer inactivity indication coming from HAL
30555
30556 @param pWDICtx: pointer to the WLAN DAL context
30557 pEventData: pointer to the event information structure
30558 @see
30559 @return Result of the function call
30560*/
30561WDI_Status
30562WDI_ProcessIbssPeerInactivityInd
30563(
30564 WDI_ControlBlockType* pWDICtx,
30565 WDI_EventInfoType* pEventData
30566)
30567{
30568 WDI_LowLevelIndType wdiInd;
30569 tIbssPeerInactivityIndMsg halIbssIndMsg;
30570
30571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30572
30573 /*-------------------------------------------------------------------------
30574 Sanity check
30575 -------------------------------------------------------------------------*/
30576 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30577 ( NULL == pEventData->pEventData ))
30578 {
30579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30580 "%s: Invalid parameters", __func__);
30581 WDI_ASSERT( 0 );
30582 return WDI_STATUS_E_FAILURE;
30583 }
30584
30585 /*-------------------------------------------------------------------------
30586 Extract indication and send it to UMAC
30587 -------------------------------------------------------------------------*/
30588 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30589 pEventData->pEventData,
30590 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30591
30592 /*Fill in the indication parameters*/
30593 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30594
30595 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30596 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30597
30598 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30599 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30600
30601 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30602 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30603 sizeof(tSirMacAddr));
30604
30605 /*Notify UMAC*/
30606 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30607
30608 return WDI_STATUS_SUCCESS;
30609
30610} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030611
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030612/**
30613*@brief WDI_RateUpdateInd will be called when the upper MAC
30614 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030615
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030616
30617 @param wdiRateUpdateIndParams:
30618
30619
30620 @see
30621 @return Result of the function call
30622*/
30623WDI_Status
30624WDI_RateUpdateInd
30625(
30626 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30627)
30628{
30629 WDI_EventInfoType wdiEventData;
30630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30631
30632 /*------------------------------------------------------------------------
30633 Sanity Check
30634 ------------------------------------------------------------------------*/
30635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30636 {
30637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30638 "WDI API call before module is initialized - Fail request");
30639
30640 return WDI_STATUS_E_NOT_ALLOWED;
30641 }
30642
30643 /*------------------------------------------------------------------------
30644 Fill in Event data and post to the Main FSM
30645 ------------------------------------------------------------------------*/
30646 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30647 wdiEventData.pEventData = wdiRateUpdateIndParams;
30648 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30649 wdiEventData.pCBfnc = NULL;
30650 wdiEventData.pUserData = NULL;
30651
30652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30653
30654}/* WDI_RateUpdateInd */
30655
30656/**
30657 @brief Process Rate Update Indication and post it to HAL
30658
30659 @param pWDICtx: pointer to the WLAN DAL context
30660 pEventData: pointer to the event information structure
30661
30662 @see
30663 @return Result of the function call
30664*/
30665WDI_Status
30666WDI_ProcessRateUpdateInd
30667(
30668 WDI_ControlBlockType* pWDICtx,
30669 WDI_EventInfoType* pEventData
30670)
30671{
30672 wpt_uint8* pSendBuffer = NULL;
30673 wpt_uint16 usDataOffset = 0;
30674 wpt_uint16 usSendSize = 0;
30675 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30676 tHalRateUpdateInd *pRateUpdateInd;
30677 WDI_Status wdiStatus;
30678
30679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30680
30681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30682 "%s", __func__);
30683
30684 /*-------------------------------------------------------------------------
30685 Sanity check
30686 -------------------------------------------------------------------------*/
30687 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30688 {
30689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30690 "%s: Invalid parameters", __func__);
30691 WDI_ASSERT(0);
30692 return WDI_STATUS_E_FAILURE;
30693 }
30694 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30695 /*-----------------------------------------------------------------------
30696 Get message buffer
30697 -----------------------------------------------------------------------*/
30698
30699 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30700 WDI_RATE_UPDATE_IND,
30701 sizeof(tHalRateUpdateParams),
30702 &pSendBuffer, &usDataOffset, &usSendSize))||
30703 ( usSendSize < (usDataOffset +
30704 sizeof(tHalRateUpdateParams) )))
30705 {
30706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30707 "Unable to get send buffer in Rate Update Indication %p ",
30708 pEventData);
30709 WDI_ASSERT(0);
30710 return WDI_STATUS_E_FAILURE;
30711 }
30712
30713 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30714
30715 /* Copy the bssid */
30716 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30717 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30718
30719 /* Copy the tx flags */
30720 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30721 pwdiRateUpdateInd->ucastDataRateTxFlag;
30722 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30723 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30724 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30725 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30726 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30727 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30728
30729 /* Copy the tx rates */
30730 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30731 pwdiRateUpdateInd->ucastDataRate;
30732 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30733 pwdiRateUpdateInd->reliableMcastDataRate;
30734 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30735 pwdiRateUpdateInd->mcastDataRate24GHz;
30736 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30737 pwdiRateUpdateInd->mcastDataRate5GHz;
30738
30739 /*-------------------------------------------------------------------------
30740 Send Rate Update Indication to HAL
30741 -------------------------------------------------------------------------*/
30742 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30743 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30744
30745 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30746
30747 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30748 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30749
30750} /* WDI_ProcessRateUpdateInd */
30751
30752#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030753/**
30754 @brief Process stop batch indication from WDA
30755
30756 @param pWDICtx: pointer to the WLAN DAL context
30757 pEventData: pointer to the event information structure
30758
30759 @see
30760 @return Result of the function call
30761*/
30762WDI_Status
30763WDI_ProcessStopBatchScanInd
30764(
30765 WDI_ControlBlockType* pWDICtx,
30766 WDI_EventInfoType* pEventData
30767)
30768{
30769 wpt_uint8* pSendBuffer = NULL;
30770 wpt_uint16 usDataOffset = 0;
30771 wpt_uint16 usSendSize = 0;
30772 WDI_Status wdiStatus;
30773 tHalBatchScanStopIndParam *pHalInd = NULL;
30774 WDI_StopBatchScanIndType *pWdiInd = NULL;
30775
30776
30777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30778
30779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30780 "%s", __func__);
30781
30782 /*-------------------------------------------------------------------------
30783 Sanity check
30784 -------------------------------------------------------------------------*/
30785
30786 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30787 {
30788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30789 "%s: Invalid parameters", __func__);
30790 WDI_ASSERT(0);
30791 return WDI_STATUS_E_FAILURE;
30792 }
30793 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30794 /*-----------------------------------------------------------------------
30795 Get message buffer
30796 -----------------------------------------------------------------------*/
30797
30798 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30799 WDI_STOP_BATCH_SCAN_IND,
30800 sizeof(tHalBatchScanStopIndParam),
30801 &pSendBuffer, &usDataOffset, &usSendSize))||
30802 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30803 {
30804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30805 "Unable to get send buffer in stop batch scan ind %p ",
30806 pEventData);
30807 WDI_ASSERT(0);
30808 return WDI_STATUS_E_FAILURE;
30809 }
30810
30811 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30812 pHalInd->param = pWdiInd->param;
30813
30814 pWDICtx->pReqStatusUserData = NULL;
30815 pWDICtx->pfncRspCB = NULL;
30816 /*-------------------------------------------------------------------------
30817 Send Stop batch scan indication to HAL
30818 -------------------------------------------------------------------------*/
30819 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30820 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30821}
30822
30823/**
30824 @brief This API is called to trigger batch scan results from FW
30825
30826 @param pWDICtx: pointer to the WLAN DAL context
30827 pEventData: pointer to the event information structure
30828
30829 @see
30830 @return Result of the function call
30831*/
30832WDI_Status
30833WDI_ProcessTriggerBatchScanResultInd
30834(
30835 WDI_ControlBlockType* pWDICtx,
30836 WDI_EventInfoType* pEventData
30837)
30838{
30839 WDI_Status wdiStatus;
30840 wpt_uint8* pSendBuffer = NULL;
30841 wpt_uint16 usDataOffset = 0;
30842 wpt_uint16 usSendSize = 0;
30843 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30844 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30845
30846
30847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30848
30849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30850 "%s", __func__);
30851
30852 /*-------------------------------------------------------------------------
30853 Sanity check
30854 -------------------------------------------------------------------------*/
30855
30856 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30857 {
30858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30859 "%s: Invalid parameters", __func__);
30860 WDI_ASSERT(0);
30861 return WDI_STATUS_E_FAILURE;
30862 }
30863 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30864 /*-----------------------------------------------------------------------
30865 Get message buffer
30866 -----------------------------------------------------------------------*/
30867
30868 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30869 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30870 sizeof(tHalBatchScanTriggerResultParam),
30871 &pSendBuffer, &usDataOffset, &usSendSize))||
30872 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30873 {
30874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30875 "Unable to get send buffer in stop batch scan ind %p ",
30876 pEventData);
30877 WDI_ASSERT(0);
30878 return WDI_STATUS_E_FAILURE;
30879 }
30880
30881 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30882 pHalInd->param = pWdiInd->param;
30883
30884 pWDICtx->pReqStatusUserData = NULL;
30885 pWDICtx->pfncRspCB = NULL;
30886 /*-------------------------------------------------------------------------
30887 Send trigger batch scan result indication to HAL
30888 -------------------------------------------------------------------------*/
30889 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30890 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30891}
30892
30893
30894/**
30895 @brief Process set batch scan response from FW
30896
30897 @param pWDICtx: pointer to the WLAN DAL context
30898 pEventData: pointer to the event information structure
30899
30900 @see
30901 @return Result of the function call
30902*/
30903WDI_Status
30904WDI_ProcessSetBatchScanRsp
30905(
30906 WDI_ControlBlockType* pWDICtx,
30907 WDI_EventInfoType* pEventData
30908)
30909{
30910 WDI_SetBatchScanCb wdiSetBatchScanCb;
30911 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30912
30913 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30915
30916 /*sanity check*/
30917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30918 ( NULL == pEventData->pEventData))
30919 {
30920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30921 "%s: Invalid parameters", __func__);
30922 WDI_ASSERT(0);
30923 return WDI_STATUS_E_FAILURE;
30924 }
30925
30926 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30927 if ( NULL == wdiSetBatchScanCb)
30928 {
30929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30930 "%s: call back function is NULL", __func__);
30931 WDI_ASSERT(0);
30932 return WDI_STATUS_E_FAILURE;
30933 }
30934
30935 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30936
30937 if (NULL == pSetBatchScanRsp)
30938 {
30939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030940 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030941 pWDICtx, pEventData, pEventData->pEventData);
30942 WDI_ASSERT(0);
30943 return WDI_STATUS_E_FAILURE;
30944 }
30945
Sunil Duttbd736ed2014-05-26 21:19:41 +053030946 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030947 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30948
30949 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30950
Sunil Duttbd736ed2014-05-26 21:19:41 +053030951 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030952 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30953
30954 wpalMemoryFree(pSetBatchScanRsp);
30955
30956 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030957}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030958
30959/**
30960 @brief Process batch scan result indication from FW
30961
30962 @param pWDICtx: pointer to the WLAN DAL context
30963 pEventData: pointer to the event information structure
30964
30965 @see
30966 @return Result of the function call
30967*/
30968WDI_Status
30969WDI_ProcessBatchScanResultInd
30970(
30971 WDI_ControlBlockType* pWDICtx,
30972 WDI_EventInfoType* pEventData
30973)
30974{
30975 void *pBatchScanResultInd;
30976 WDI_LowLevelIndType wdiInd;
30977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30978
Sunil Duttbd736ed2014-05-26 21:19:41 +053030979 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30981 ( NULL == pEventData->pEventData))
30982 {
30983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30984 "%s: Invalid parameters", __func__);
30985 WDI_ASSERT(0);
30986 return WDI_STATUS_E_FAILURE;
30987 }
30988
Sunil Duttbd736ed2014-05-26 21:19:41 +053030989 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030990 pBatchScanResultInd = (void *)pEventData->pEventData;
30991
Sunil Duttbd736ed2014-05-26 21:19:41 +053030992 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030993 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30994
30995 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30996
Sunil Duttbd736ed2014-05-26 21:19:41 +053030997 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030998 if (pWDICtx->wdiLowLevelIndCB)
30999 {
31000 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31001 }
31002 else
31003 {
31004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31005 "%s: WDILowLevelIndCb is null", __func__);
31006 WDI_ASSERT(0);
31007 return WDI_STATUS_E_FAILURE;
31008 }
31009
31010 return WDI_STATUS_SUCCESS;
31011} /*End of WDI_ProcessBatchScanResultInd*/
31012
Sunil Duttbd736ed2014-05-26 21:19:41 +053031013#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31014/**
31015 @brief Process Link Layer Statistics Result indication from FW
31016
31017 @param pWDICtx: pointer to the WLAN DAL context
31018 pEventData: pointer to the event information structure
31019
31020 @see
31021 @return Result of the function call
31022*/
31023WDI_Status
31024WDI_ProcessLinkLayerStatsResultsInd
31025(
31026 WDI_ControlBlockType* pWDICtx,
31027 WDI_EventInfoType* pEventData
31028)
31029{
31030 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053031031 WDI_LLstatsResultsType *halLLStatsResults;
31032 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031033 WDI_LowLevelIndType wdiInd;
31034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31035
31036 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31037 "%s: Event RESULTS Indication", __func__);
31038
31039 /* sanity check */
31040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31041 ( NULL == pEventData->pEventData))
31042 {
31043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31044 "%s: Invalid parameters", __func__);
31045 WDI_ASSERT(0);
31046 return WDI_STATUS_E_FAILURE;
31047 }
31048
31049 /* extract response and send it to UMAC */
31050 pLinkLayerStatsInd = (void *)pEventData->pEventData;
31051
31052 /* Fill in the indication parameters */
31053 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
31054
Dino Mycled3d50022014-07-07 12:58:25 +053031055 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
31056 = pLinkLayerStatsInd;
31057
31058 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
31059
31060
31061 /* Need to fill in the MAC address */
31062 if ( WDI_STATUS_SUCCESS !=
31063 WDI_STATableGetStaMacAddr(pWDICtx,
31064 halLLStatsResults->iface_id,
31065 &macAddr))
31066 {
31067 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31068 " ifaceId: %u does not exist in the WDI Station Table",
31069 halLLStatsResults->iface_id);
31070
31071 return WDI_STATUS_E_FAILURE;
31072 }
31073 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
31074 macAddr, WDI_MAC_ADDR_LEN);
31075
31076 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31077 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
31078 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053031079
31080 /* Notify UMAC */
31081 if (pWDICtx->wdiLowLevelIndCB)
31082 {
31083 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31084 }
31085 else
31086 {
31087 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31088 "%s: WDILowLevelIndCb is null", __func__);
31089 WDI_ASSERT(0);
31090 return WDI_STATUS_E_FAILURE;
31091 }
31092
31093 return WDI_STATUS_SUCCESS;
31094} /* End of WDI_ProcessLinkLayerStatsResultsInd */
31095#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
31096
Rajeev79dbe4c2013-10-05 11:03:42 +053031097/**
31098 @brief WDI_ProcessSetBatchScanReq -
31099 Set batch scan request to FW
31100
31101 @param pWDICtx : wdi context
31102 pEventData : indication data
31103
31104 @see
31105 @return none
31106*/
31107WDI_Status WDI_ProcessSetBatchScanReq
31108(
31109 WDI_ControlBlockType* pWDICtx,
31110 WDI_EventInfoType* pEventData
31111)
31112{
31113 WDI_SetBatchScanReqType *pWdiReq;
31114 WDI_Status wdiStatus;
31115 wpt_uint8* pSendBuffer = NULL;
31116 wpt_uint16 usDataOffset = 0;
31117 wpt_uint16 usSendSize = 0;
31118 tHalBatchScanSetParams *pHalReq;
31119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31120
31121 /*sanity check*/
31122 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
31123 {
31124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31125 "%s: Invalid parameters in set batch scan request", __func__);
31126 WDI_ASSERT(0);
31127 return WDI_STATUS_E_FAILURE;
31128 }
31129
31130
31131 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
31132
31133
31134 /*get message buffer*/
31135 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
31136 WDI_SET_BATCH_SCAN_REQ,
31137 sizeof(tHalBatchScanSetParams),
31138 &pSendBuffer, &usDataOffset, &usSendSize))||
31139 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
31140 {
31141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31142 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
31143 WDI_ASSERT(0);
31144 return WDI_STATUS_E_FAILURE;
31145 }
31146
31147 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
31148
31149 pHalReq->rtt = pWdiReq->rtt;
31150 pHalReq->rfBand = pWdiReq->rfBand;
31151 pHalReq->bestNetworks = pWdiReq->bestNetwork;
31152 pHalReq->scanInterval = pWdiReq->scanFrequency;
31153 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
31154
31155 /*send set batch scan request to fw*/
31156 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31157 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31158
31159 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31160 usSendSize, pWDICtx->pfncRspCB,
31161 pWDICtx->pReqStatusUserData,
31162 WDI_SET_BATCH_SCAN_RESP);
31163
31164 return wdiStatus;
31165}
31166
31167/**
31168 @brief WDI_SetBatchScanReq
31169 This API is called to set batch scan request in FW
31170
31171 @param pBatchScanReqParam : pointer to set batch scan re param
31172 usrData : Client context
31173 setBatchScanRspCb : set batch scan resp callback
31174 @see
31175 @return SUCCESS or FAIL
31176*/
31177WDI_Status WDI_SetBatchScanReq
31178(
31179 void *pBatchScanReqParam,
31180 void *usrData,
31181 WDI_SetBatchScanCb setBatchScanRspCb
31182)
31183{
31184 WDI_EventInfoType wdiEventData;
31185
31186 /*sanity check*/
31187 if (eWLAN_PAL_FALSE == gWDIInitialized)
31188 {
31189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31190 "WDI API call before module is initialized - Fail request");
31191
31192 return WDI_STATUS_E_NOT_ALLOWED;
31193 }
31194
31195 /* fill in event data and post to the main FSM */
31196 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
31197 wdiEventData.pEventData = pBatchScanReqParam;
31198 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
31199 wdiEventData.pCBfnc = setBatchScanRspCb;
31200 wdiEventData.pUserData = usrData;
31201
31202 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31203}
31204
31205/**
31206 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
31207
31208 @param None
31209
31210 @see
31211
31212 @return Status of the request
31213*/
31214WDI_Status
31215WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
31216{
31217 WDI_EventInfoType wdiEventData;
31218
31219 /*-------------------------------------------------------------------------
31220 Sanity Check
31221 ------------------------------------------------------------------------*/
31222 if (eWLAN_PAL_FALSE == gWDIInitialized)
31223 {
31224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31225 "WDI API call before module is initialized - Fail request!");
31226
31227 return WDI_STATUS_E_NOT_ALLOWED;
31228 }
31229
31230 /*-------------------------------------------------------------------------
31231 Fill in Event data and post to the Main FSM
31232 ------------------------------------------------------------------------*/
31233 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
31234 wdiEventData.pEventData = pWdiReq;
31235 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
31236 wdiEventData.pCBfnc = NULL;
31237 wdiEventData.pUserData = NULL;
31238
31239 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31240}
31241
31242/**
31243 @brief WDI_TriggerBatchScanResultInd
31244 This API is called to pull batch scan result from FW
31245
31246 @param pWdiReq : pointer to get batch scan ind param
31247 @see
31248 @return SUCCESS or FAIL
31249*/
31250WDI_Status WDI_TriggerBatchScanResultInd
31251(
31252 WDI_TriggerBatchScanResultIndType *pWdiReq
31253)
31254{
31255 WDI_EventInfoType wdiEventData;
31256 /*-------------------------------------------------------------------------
31257 Sanity Check
31258 ------------------------------------------------------------------------*/
31259 if (eWLAN_PAL_FALSE == gWDIInitialized)
31260 {
31261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31262 "WDI API call before module is initialized - Fail request!");
31263
31264 return WDI_STATUS_E_NOT_ALLOWED;
31265 }
31266
31267 /*-------------------------------------------------------------------------
31268 Fill in Event data and post to the Main FSM
31269 ------------------------------------------------------------------------*/
31270 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
31271 wdiEventData.pEventData = pWdiReq;
31272 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
31273 wdiEventData.pCBfnc = NULL;
31274 wdiEventData.pUserData = NULL;
31275
31276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31277}
Rajeev79dbe4c2013-10-05 11:03:42 +053031278#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080031279
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080031280/**
31281 @brief Process Update Channel Rsp function (called when a response is
31282 being received over the bus from HAL)
31283
31284 @param pWDICtx: pointer to the WLAN DAL context
31285 pEventData: pointer to the event information structure
31286
31287 @see
31288 @return Result of the function call
31289*/
31290WDI_Status
31291WDI_ProcessUpdateChanRsp
31292(
31293 WDI_ControlBlockType* pWDICtx,
31294 WDI_EventInfoType* pEventData
31295)
31296{
31297 WDI_Status wdiStatus;
31298 eHalStatus halStatus;
31299 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
31300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31301
31302 /*-------------------------------------------------------------------------
31303 Sanity check
31304 -------------------------------------------------------------------------*/
31305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31306 ( NULL == pEventData->pEventData))
31307 {
31308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31309 "%s: Invalid parameters", __func__);
31310 WDI_ASSERT(0);
31311 return WDI_STATUS_E_FAILURE;
31312 }
31313
31314 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
31315
31316 /*-------------------------------------------------------------------------
31317 Extract response and send it to UMAC
31318 -------------------------------------------------------------------------*/
31319 halStatus = *((eHalStatus*)pEventData->pEventData);
31320 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31321
31322 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
31323
31324 return WDI_STATUS_SUCCESS;
31325}/*WDI_ProcessUpdateChanRsp*/
31326
Leo Chang0b0e45a2013-12-15 15:18:55 -080031327#ifdef FEATURE_WLAN_CH_AVOID
31328/**
31329 @brief v -WDI_ProcessChAvoidInd
31330
31331
31332 @param pWDICtx : wdi context
31333 pEventData : indication data
31334 @see
31335 @return Result of the function call
31336*/
31337WDI_Status
31338WDI_ProcessChAvoidInd
31339(
31340 WDI_ControlBlockType* pWDICtx,
31341 WDI_EventInfoType* pEventData
31342)
31343{
31344 WDI_LowLevelIndType wdiInd;
31345 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31346 wpt_uint16 rangeLoop;
31347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31348
31349 /*-------------------------------------------------------------------------
31350 Sanity check
31351 -------------------------------------------------------------------------*/
31352 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31353 (NULL == pEventData->pEventData))
31354 {
31355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31356 "%s: Invalid parameters", __func__);
31357 WDI_ASSERT(0);
31358 return WDI_STATUS_E_FAILURE;
31359 }
31360
31361 /*-------------------------------------------------------------------------
31362 Extract indication and send it to UMAC
31363 -------------------------------------------------------------------------*/
31364 wpalMemoryCopy(&chAvoidIndicationParam,
31365 pEventData->pEventData,
31366 sizeof(tHalAvoidFreqRangeIndParams));
31367
Abhishek Singhe34eb552015-06-18 10:12:15 +053031368 /* Avoid Over flow */
31369 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31370 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31371
Leo Chang0b0e45a2013-12-15 15:18:55 -080031372 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31373 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31374 chAvoidIndicationParam.avoidCnt;
31375 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31376 (void *)chAvoidIndicationParam.avoidRange,
31377 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31378 sizeof(WDI_ChAvoidFreqType));
31379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31380 "%s: band count %d", __func__,
31381 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31382 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31383 {
31384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31385 "%s: srart freq %d, end freq %d", __func__,
31386 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31387 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31388 }
31389
31390 /*Notify UMAC*/
31391 if (pWDICtx->wdiLowLevelIndCB)
31392 {
31393 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31394 }
31395
31396 return WDI_STATUS_SUCCESS;
31397}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031398
Leo Chang0b0e45a2013-12-15 15:18:55 -080031399#endif /* FEATURE_WLAN_CH_AVOID */
31400
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031401/**
31402 @brief Process OBSS Start scan result indication
31403
31404 @param pWDICtx: pointer to the WLAN DAL context
31405 pEventData: pointer to the event information structure
31406
31407 @see
31408 @return Result of the function call
31409*/
31410WDI_Status
31411WDI_ProcessHT40OBSSScanInd
31412(
31413 WDI_ControlBlockType* pWDICtx,
31414 WDI_EventInfoType* pEventData
31415)
31416{
31417 wpt_uint8* pSendBuffer = NULL;
31418 wpt_uint16 usDataOffset = 0;
31419 wpt_uint16 usSendSize = 0;
31420 wpt_uint16 usLen = 0;
31421 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31422 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31423 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31424 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31425
31426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31427
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031429 "%s", __func__);
31430
31431 /*-------------------------------------------------------------------------
31432 Sanity check
31433 -------------------------------------------------------------------------*/
31434 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31435 {
31436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31437 "%s: Invalid parameters", __func__);
31438 WDI_ASSERT(0);
31439 return WDI_STATUS_E_FAILURE;
31440 }
31441 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31442
31443 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31444 /*-----------------------------------------------------------------------
31445 Get message buffer
31446 -----------------------------------------------------------------------*/
31447
31448 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31449 WDI_START_HT40_OBSS_SCAN_IND,
31450 sizeof(tHT40ObssScanIndType),
31451 &pSendBuffer, &usDataOffset, &usSendSize))||
31452 ( usSendSize < (usDataOffset + usLen )))
31453 {
31454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31455 "Unable to get send buffer in HT40 OBSS Start req %p ",
31456 pEventData);
31457 WDI_ASSERT(0);
31458 return WDI_STATUS_E_FAILURE;
31459 }
31460 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31461 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31462 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31463 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31464 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31465 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31466 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31467 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31468 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31469 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31470 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31471 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31472 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31473 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31474 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31475 pHT40ObssScanInd->OBSSScanActivityThreshold =
31476 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31477 pHT40ObssScanInd->selfStaIdx =
31478 pwdiHT40OBSSScanInd->selfStaIdx;
31479 pHT40ObssScanInd->bssIdx =
31480 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031481 pHT40ObssScanInd->currentOperatingClass =
31482 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031483 pHT40ObssScanInd->fortyMHZIntolerent =
31484 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31485 pHT40ObssScanInd->channelCount =
31486 pwdiHT40OBSSScanInd->channelCount;
31487
31488 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31489 WDI_ROAM_SCAN_MAX_CHANNELS);
31490 pHT40ObssScanInd->ieFieldLen =
31491 pwdiHT40OBSSScanInd->ieFieldLen;
31492
31493 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31494 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31495 pWDICtx->pReqStatusUserData = NULL;
31496 pWDICtx->pfncRspCB = NULL;
31497
31498 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31499 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31500
31501 /*-------------------------------------------------------------------------
31502 Send OBSS Start Indication to HAL
31503 -------------------------------------------------------------------------*/
31504 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31505 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31506
31507} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31508
31509
31510/**
31511 @brief wdi_HT40OBSSScanInd
31512 This API is called to start OBSS scan
31513
31514 @param pWdiReq : pointer to get ind param
31515 @see
31516 @return SUCCESS or FAIL
31517*/
31518WDI_Status WDI_HT40OBSSScanInd
31519(
31520 WDI_HT40ObssScanParamsType *pWdiReq
31521)
31522{
31523 WDI_EventInfoType wdiEventData;
31524
31525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31526 "%s", __func__);
31527 /*-------------------------------------------------------------------------
31528 Sanity Check
31529 ------------------------------------------------------------------------*/
31530 if (eWLAN_PAL_FALSE == gWDIInitialized)
31531 {
31532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31533 "WDI API call before module is initialized - Fail request!");
31534
31535 return WDI_STATUS_E_NOT_ALLOWED;
31536 }
31537
31538 /*-------------------------------------------------------------------------
31539 Fill in Event data and post to the Main FSM
31540 ------------------------------------------------------------------------*/
31541 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31542 wdiEventData.pEventData = pWdiReq;
31543 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31544 wdiEventData.pCBfnc = NULL;
31545 wdiEventData.pUserData = NULL;
31546
31547
31548 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31549}
31550
31551/**
31552 @brief Process OBSS Stop scan result
31553
31554 @param pWDICtx: pointer to the WLAN DAL context
31555 pEventData: pointer to the event information structure
31556
31557 @see
31558 @return Result of the function call
31559*/
31560WDI_Status
31561WDI_ProcessHT40OBSSStopScanInd
31562(
31563 WDI_ControlBlockType* pWDICtx,
31564 WDI_EventInfoType* pEventData
31565)
31566{
31567 wpt_uint8* pSendBuffer = NULL;
31568 wpt_uint16 usDataOffset = 0;
31569 wpt_uint16 usSendSize = 0;
31570 wpt_uint16 usLen = 0;
31571 wpt_uint8 *wdiBssIdx = 0;
31572 tANI_U8 *bssIdx = 0;
31573 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31574
31575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31576
31577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31578 "%s", __func__);
31579
31580 /*-------------------------------------------------------------------------
31581 Sanity check
31582 -------------------------------------------------------------------------*/
31583 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31584 {
31585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31586 "%s: Invalid parameters", __func__);
31587 WDI_ASSERT(0);
31588 return WDI_STATUS_E_FAILURE;
31589 }
31590 bssIdx = (wpt_uint8*)pEventData->pEventData;
31591 /*-----------------------------------------------------------------------
31592 Get message buffer
31593 -----------------------------------------------------------------------*/
31594
31595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31596 WDI_STOP_HT40_OBSS_SCAN_IND,
31597 sizeof(tANI_U8),
31598 &pSendBuffer, &usDataOffset, &usSendSize))||
31599 ( usSendSize < (usDataOffset + usLen )))
31600 {
31601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31602 "Unable to get send buffer in HT40 OBSS Start req %p ",
31603 pEventData);
31604 WDI_ASSERT(0);
31605 return WDI_STATUS_E_FAILURE;
31606 }
31607
31608 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31609 bssIdx = wdiBssIdx;
31610
31611 pWDICtx->pReqStatusUserData = NULL;
31612 pWDICtx->pfncRspCB = NULL;
31613
31614 /*-------------------------------------------------------------------------
31615 Send DHCP Start Indication to HAL
31616 -------------------------------------------------------------------------*/
31617 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31618 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31619} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31620
31621/**
31622 @brief WDI_HT40OBSSStopScanInd
31623 This API is called to start OBSS scan
31624 @param pWdiReq : pointer to get ind param
31625 @see
31626 @return SUCCESS or FAIL
31627*/
31628WDI_Status WDI_HT40OBSSStopScanInd
31629(
31630 wpt_uint8 bssIdx
31631)
31632{
31633 WDI_EventInfoType wdiEventData;
31634
31635 /*-------------------------------------------------------------------------
31636 Sanity Check
31637 ------------------------------------------------------------------------*/
31638 if (eWLAN_PAL_FALSE == gWDIInitialized)
31639 {
31640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31641 "WDI API call before module is initialized - Fail request!");
31642
31643 return WDI_STATUS_E_NOT_ALLOWED;
31644 }
31645
31646 /*-------------------------------------------------------------------------
31647 Fill in Event data and post to the Main FSM
31648 ------------------------------------------------------------------------*/
31649 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31650 wdiEventData.pEventData = &bssIdx;
31651 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31652 wdiEventData.pCBfnc = NULL;
31653 wdiEventData.pUserData = NULL;
31654
31655 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31656}
31657
c_hpothu86041002014-04-14 19:06:51 +053031658WDI_Status
31659WDI_printRegInfo
31660(
31661 WDI_ControlBlockType* pWDICtx,
31662 WDI_EventInfoType* pEventData
31663)
31664{
31665 tHalRegDebugInfo *pRegTable;
31666 tHalRegDebugInfoParams *pRegParams;
31667 uint32 cnt=0;
31668
31669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31670 "%s: ", __func__);
31671 /*-------------------------------------------------------------------------
31672 Sanity check
31673 -------------------------------------------------------------------------*/
31674 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31675 ( NULL == pEventData->pEventData))
31676 {
31677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31678 "%s: Invalid parameters", __func__);
31679 WDI_ASSERT(0);
31680 return WDI_STATUS_E_FAILURE;
31681 }
31682
31683 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31684
31685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31686 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31687 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31688
31689 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31690
31691 if (pRegParams->regCount <= 0)
31692 {
31693 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31694 "%s incorrect parameters passed", __func__);
31695 return WDI_STATUS_E_FAILURE;
31696 }
31697
31698 while(pRegParams->regCount--)
31699 {
31700 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31701 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31702 cnt++;
31703 }
31704
31705 return WDI_STATUS_SUCCESS;
31706}
c_hpothu92367912014-05-01 15:18:17 +053031707
31708/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031709 * FUNCTION: WDI_delBaInd
31710 * send the delBA to peer.
31711 */
31712
31713WDI_Status
31714WDI_delBaInd
31715(
31716 WDI_ControlBlockType* pWDICtx,
31717 WDI_EventInfoType* pEventData
31718
31719)
31720{
31721 tHalWlanDelBaIndMsg halDelBaInd;
31722 WDI_LowLevelIndType wdiInd;
31723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31724
31725 /*-------------------------------------------------------------------------
31726 Sanity check
31727 -------------------------------------------------------------------------*/
31728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31729 ( NULL == pEventData->pEventData))
31730 {
31731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31732 "%s: Invalid parameters", __func__);
31733 WDI_ASSERT(0);
31734 return WDI_STATUS_E_FAILURE;
31735 }
31736
31737 /*-------------------------------------------------------------------------
31738 Extract indication and send it to UMAC
31739 -------------------------------------------------------------------------*/
31740
31741 /* Parameters need to be unpacked according to HAL struct*/
31742 wpalMemoryCopy( &halDelBaInd,
31743 pEventData->pEventData,
31744 sizeof(halDelBaInd));
31745
31746 /*Fill in the indication parameters*/
31747 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31748
31749 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31750 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31751 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31752
31753 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31754 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31755 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31756
31757 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31758 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31759 if ( pWDICtx->wdiLowLevelIndCB )
31760 {
31761 /*Notify UMAC*/
31762 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31763 }
31764
31765 return WDI_STATUS_SUCCESS;
31766
31767
31768}
31769
31770/*
c_hpothu92367912014-05-01 15:18:17 +053031771 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31772 * send the response to PE with beacon miss count
31773 * received from WDI.
31774 */
31775WDI_Status
31776WDI_ProcessGetBcnMissRateRsp
31777(
31778 WDI_ControlBlockType* pWDICtx,
31779 WDI_EventInfoType* pEventData
31780)
31781{
31782 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31783 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31784
31785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31786 "In %s",__func__);
31787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31788
31789 /*-------------------------------------------------------------------------
31790 Sanity check
31791 -------------------------------------------------------------------------*/
31792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31793 ( NULL == pEventData->pEventData))
31794 {
31795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31796 "%s: Invalid parameters", __func__);
31797 WDI_ASSERT(0);
31798 return WDI_STATUS_E_FAILURE;
31799 }
31800
31801 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31802 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31803
31804 /*Notify UMAC*/
31805 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31806 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31807 return WDI_STATUS_SUCCESS;
31808}
31809
31810/*
31811 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31812 * Request to WDI to get missed beacon rate.
31813 */
31814WDI_Status
31815WDI_ProcessGetBcnMissRateReq
31816(
31817 WDI_ControlBlockType* pWDICtx,
31818 WDI_EventInfoType* pEventData
31819)
31820{
31821 wpt_uint8* pSendBuffer = NULL;
31822 wpt_uint16 usDataOffset = 0;
31823 wpt_uint16 usSendSize = 0;
31824 wpt_uint8 ucCurrentBSSSesIdx = 0;
31825 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031826 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31827 tHalBcnMissRateReqParams halBcnMissRateReq;
31828
31829/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31830
31831 /*-------------------------------------------------------------------------
31832 Sanity check
31833 -------------------------------------------------------------------------*/
31834 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31835 ( NULL == pEventData->pCBfnc ) )
31836 {
31837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31838 "%s: Invalid parameters", __func__);
31839 WDI_ASSERT(0);
31840 return WDI_STATUS_E_FAILURE;
31841 }
31842
31843 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31844
31845 wpalMutexAcquire(&pWDICtx->wptMutex);
31846
31847 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31848 pEventData->pEventData, &pBSSSes);
31849 if ( NULL == pBSSSes )
31850 {
31851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31852 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031853 MAC_ADDRESS_STR, __func__,
31854 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031855 wpalMutexRelease(&pWDICtx->wptMutex);
31856 return WDI_STATUS_E_NOT_ALLOWED;
31857 }
31858 wpalMutexRelease(&pWDICtx->wptMutex);
31859
31860 /*-----------------------------------------------------------------------
31861 Get message buffer
31862 -----------------------------------------------------------------------*/
31863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31864 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31865 sizeof(tHalBcnMissRateReqParams),
31866 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31867 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31868 {
31869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31870 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31871 pEventData);
31872 WDI_ASSERT(0);
31873 return WDI_STATUS_E_FAILURE;
31874 }
31875
31876 pWDICtx->wdiReqStatusCB = NULL;
31877 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31878
31879 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31880
31881 wpalMemoryCopy( pSendBuffer+usDataOffset,
31882 &halBcnMissRateReq,
31883 sizeof(tHalBcnMissRateReqParams));
31884 /*-------------------------------------------------------------------------
31885 Send Get STA Request to HAL
31886 -------------------------------------------------------------------------*/
31887 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31888 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31889}
31890
31891/**
31892 @brief WDI_GetBcnMissRate
31893
31894 @param pUserData: user data will be passed back with the
31895 callback
31896 WDI_GetBcnMissRateCb: callback for passing back the response
31897 of the get stats operation received from the device
31898 bssid: bssid, to send bssIdx to FW
31899
31900 @return SUCCESS or FAIL
31901*/
31902WDI_Status WDI_GetBcnMissRate( void *pUserData,
31903 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31904 tANI_U8 *bssid )
31905{
31906 WDI_EventInfoType wdiEventData;
31907
31908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31909
31910 /*------------------------------------------------------------------------
31911 Sanity Check
31912 ------------------------------------------------------------------------*/
31913 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31914 {
31915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31916 "WDI API call before module is initialized - Fail request");
31917
31918 return WDI_STATUS_E_NOT_ALLOWED;
31919 }
31920
31921 /*------------------------------------------------------------------------
31922 Fill in Event data and post to the Main FSM
31923 ------------------------------------------------------------------------*/
31924 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31925 wdiEventData.pEventData = bssid;
31926 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31927 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31928 wdiEventData.pUserData = pUserData;
31929
31930 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31931}
Abhishek Singh85b74712014-10-08 11:38:19 +053031932
31933/*
31934 * FUNCTION: WDI_ProcessGetFwStatsRsp
31935 * send the response with FW stats asked.
31936 */
31937WDI_Status
31938 WDI_ProcessGetFwStatsRsp
31939(
31940 WDI_ControlBlockType* pWDICtx,
31941 WDI_EventInfoType* pEventData
31942)
31943{
31944 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31945 tpHalfwStatsRspParams pHalFwstatsRsp;
31946 WDI_FWStatsResults fwStats;
31947
31948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31949
31950 /*-------------------------------------------------------------------------
31951 Sanity check
31952 -------------------------------------------------------------------------*/
31953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31954 ( NULL == pEventData->pEventData))
31955 {
31956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31957 "%s: Invalid parameters", __func__);
31958 WDI_ASSERT(0);
31959 return WDI_STATUS_E_FAILURE;
31960 }
31961 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31962 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31963
31964 if(pHalFwstatsRsp->length)
31965 {
31966 switch( pHalFwstatsRsp->type )
31967 {
31968 case FW_UBSP_STATS:
31969 {
31970 ubspFwStats *ubspStatsfromFw;
31971
31972 fwStats.type = pHalFwstatsRsp->type;
31973 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31974 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31975 ubspStatsfromFw->ubsp_enter_cnt;
31976 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31977 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31978 }
31979 break;
31980 default:
31981 {
31982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31983 "%s: No handling for stats type %d", __func__,
31984 pHalFwstatsRsp->type);
31985 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31986 NULL, pWDICtx->pRspCBUserData);
31987 return WDI_STATUS_E_FAILURE;
31988 }
31989 }
31990 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31991 }
31992 else
31993 {
31994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31995 "%s: Length = 0 for type %d return failure ", __func__,
31996 pHalFwstatsRsp->type);
31997 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31998 NULL, pWDICtx->pRspCBUserData);
31999 return WDI_STATUS_E_FAILURE;
32000 }
32001 return WDI_STATUS_SUCCESS;
32002}
32003
32004/*
32005 * FUNCTION: WDI_ProcessGetFwStatsReq
32006 * Request to WDI to get FW Stats.
32007 */
32008WDI_Status
32009 WDI_ProcessGetFwStatsReq
32010(
32011 WDI_ControlBlockType* pWDICtx,
32012 WDI_EventInfoType* pEventData
32013)
32014{
32015 wpt_uint8* pSendBuffer = NULL;
32016 wpt_uint16 usDataOffset = 0;
32017 wpt_uint16 usSendSize = 0;
32018 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
32019 tHalfwStatsReqParams halFwStatsReq;
32020
32021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32022
32023 /*-------------------------------------------------------------------------
32024 Sanity check
32025 -------------------------------------------------------------------------*/
32026 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
32027 ( NULL == pEventData->pCBfnc ) )
32028 {
32029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32030 "%s: Invalid parameters", __func__);
32031 WDI_ASSERT(0);
32032 return WDI_STATUS_E_FAILURE;
32033 }
32034
32035 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
32036
32037 /*-----------------------------------------------------------------------
32038 Get message buffer
32039 -----------------------------------------------------------------------*/
32040 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32041 pWDICtx, WDI_GET_FW_STATS_REQ,
32042 sizeof(tHalfwStatsReqParams),
32043 &pSendBuffer, &usDataOffset, &usSendSize)) ||
32044 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
32045 {
32046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32047 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
32048 pEventData);
32049 WDI_ASSERT(0);
32050 return WDI_STATUS_E_FAILURE;
32051 }
32052
32053 pWDICtx->wdiReqStatusCB = NULL;
32054 pWDICtx->pReqStatusUserData = pEventData->pEventData;
32055 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
32056 wpalMemoryCopy( pSendBuffer+usDataOffset,
32057 &halFwStatsReq,
32058 sizeof(tHalfwStatsReqParams));
32059 /*-------------------------------------------------------------------------
32060 Send Get STA Request to HAL
32061 -------------------------------------------------------------------------*/
32062 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
32063 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
32064}
32065
Sunil Duttbd736ed2014-05-26 21:19:41 +053032066#ifdef WLAN_FEATURE_LINK_LAYER_STATS
32067
32068/**
32069 @brief WDI_LLStatsSetReq
32070 This API is called to set link layer stats request in FW
32071
32072 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
32073 wdiLLStatsSetRspCb : set link layer stats resp callback
32074 usrData : Client context
32075 @see
32076 @return SUCCESS or FAIL
32077*/
32078WDI_Status
32079WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
32080 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
32081 void* pUserData)
32082{
32083 WDI_EventInfoType wdiEventData;
32084
32085 /*------------------------------------------------------------------------
32086 Sanity Check
32087 ------------------------------------------------------------------------*/
32088 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32089 {
32090 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32091 "WDI API call before module is initialized - Fail request");
32092
32093 return WDI_STATUS_E_NOT_ALLOWED;
32094 }
32095
32096 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
32097 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
32098 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
32099 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
32100 wdiEventData.pUserData = pUserData;
32101
32102 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32103}
32104
32105/**
32106 @brief WDI_ProcessLLStatsSetReq -
32107 Set Link Layer Stats request to FW
32108
32109 @param pWDICtx : wdi context
32110 pEventData : indication data
32111
32112 @see
32113 @return none
32114*/
32115WDI_Status
32116WDI_ProcessLLStatsSetReq
32117(
32118 WDI_ControlBlockType* pWDICtx,
32119 WDI_EventInfoType* pEventData
32120)
32121{
32122 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
32123 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
32124 wpt_uint8* pSendBuffer = NULL;
32125 wpt_uint16 usSendSize = 0;
32126 wpt_uint16 usDataOffset = 0;
32127 tHalMacLlSetStatsReqParams halLLStatsSetParams;
32128
32129 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32130 ( NULL == pEventData->pCBfnc ))
32131 {
32132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32133 "%s: Invalid parameters", __func__);
32134 WDI_ASSERT(0);
32135 return WDI_STATUS_E_FAILURE;
32136 }
32137
32138 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
32139 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
32140
32141 /*-----------------------------------------------------------------------
32142 Get message buffer
32143 ! TO DO : proper conversion into the HAL Message Request Format
32144 -----------------------------------------------------------------------*/
32145 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32146 pWDICtx,
32147 WDI_LL_STATS_SET_REQ,
32148 sizeof(tHalMacLlSetStatsReqParams),
32149 &pSendBuffer, &usDataOffset,
32150 &usSendSize))||
32151 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
32152 {
32153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32154 "Unable to get send buffer in %s %p %p %p", __func__,
32155 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
32156 WDI_ASSERT(0);
32157 return WDI_STATUS_E_FAILURE;
32158 }
32159
32160
Dino Mycled3d50022014-07-07 12:58:25 +053032161 /* Need to fill in the self STA Index */
32162 if ( WDI_STATUS_SUCCESS !=
32163 WDI_STATableFindStaidByAddr(pWDICtx,
32164 pwdiLLStatsSetReqParams->macAddr,
32165 &halLLStatsSetParams.sta_id))
32166 {
32167 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32168 MAC_ADDRESS_STR
32169 ": This station does not exist in the WDI Station Table",
32170 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
32171
32172 wpalMemoryFree(pSendBuffer);
32173 return WDI_STATUS_E_FAILURE;
32174 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032175
32176 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032177 halLLStatsSetParams.mpdu_size_threshold =
32178 pwdiLLStatsSetReqParams->mpduSizeThreshold;
32179 halLLStatsSetParams.aggressive_statistics_gathering =
32180 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
32181
32182 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32183 " halLLStatsSetParams.req_id = %u",
32184 halLLStatsSetParams.req_id);
32185 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32186 " halLLStatsSetParams.sta_id = %u",
32187 halLLStatsSetParams.sta_id);
32188 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32189 " halLLStatsSetParams.mpdu_size_threshold = %u",
32190 halLLStatsSetParams.mpdu_size_threshold);
32191 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32192 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
32193 halLLStatsSetParams.aggressive_statistics_gathering);
32194
32195 wpalMemoryCopy(pSendBuffer+usDataOffset,
32196 &halLLStatsSetParams,
32197 sizeof(halLLStatsSetParams));
32198
32199 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32200
32201 /*-------------------------------------------------------------------------
32202 Send Clear Link Layer Stats Request to HAL
32203 -------------------------------------------------------------------------*/
32204 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32205 wdiLLStatsSetCb, pEventData->pUserData,
32206 WDI_LL_STATS_SET_RSP);
32207}
32208
32209/**
32210 @brief WDI_LLStatsGetReq
32211 This API is called to get link layer stats request in FW
32212
32213 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
32214 wdiLLStatsGetRspCb : get link layer stats resp callback
32215 usrData : Client context
32216 @see
32217 @return SUCCESS or FAIL
32218*/
32219WDI_Status
32220WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
32221 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
32222 void* pUserData)
32223{
32224 WDI_EventInfoType wdiEventData;
32225
32226 /*------------------------------------------------------------------------
32227 Sanity Check
32228 ------------------------------------------------------------------------*/
32229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32230 {
32231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32232 "WDI API call before module is initialized - Fail request");
32233
32234 return WDI_STATUS_E_NOT_ALLOWED;
32235 }
32236
32237 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
32238 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
32239 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
32240 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
32241 wdiEventData.pUserData = pUserData;
32242
32243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32244}
32245
32246/**
32247 @brief WDI_ProcessLLStatsGetReq -
32248 Get Link Layer Stats request to FW
32249
32250 @param pWDICtx : wdi context
32251 pEventData : indication data
32252
32253 @see
32254 @return none
32255*/
32256WDI_Status
32257WDI_ProcessLLStatsGetReq
32258(
32259 WDI_ControlBlockType* pWDICtx,
32260 WDI_EventInfoType* pEventData
32261)
32262{
32263 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
32264 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
32265 wpt_uint8* pSendBuffer = NULL;
32266 wpt_uint16 usSendSize = 0;
32267 wpt_uint16 usDataOffset = 0;
32268 tHalMacLlGetStatsReqParams halLLStatsGetParams;
32269
32270 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32271 ( NULL == pEventData->pCBfnc ))
32272 {
32273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32274 "%s: Invalid parameters", __func__);
32275 WDI_ASSERT(0);
32276 return WDI_STATUS_E_FAILURE;
32277 }
32278
32279 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
32280 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
32281
32282 /*-----------------------------------------------------------------------
32283 Get message buffer
32284 ! TO DO : proper conversion into the HAL Message Request Format
32285 -----------------------------------------------------------------------*/
32286 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32287 pWDICtx,
32288 WDI_LL_STATS_GET_REQ,
32289 sizeof(tHalMacLlGetStatsReqParams),
32290 &pSendBuffer, &usDataOffset,
32291 &usSendSize))||
32292 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
32293 {
32294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32295 "Unable to get send buffer in %s %p %p %p", __func__,
32296 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
32297 WDI_ASSERT(0);
32298 return WDI_STATUS_E_FAILURE;
32299 }
Dino Mycled3d50022014-07-07 12:58:25 +053032300 /* Need to fill in the self STA Index */
32301 if ( WDI_STATUS_SUCCESS !=
32302 WDI_STATableFindStaidByAddr(pWDICtx,
32303 pwdiLLStatsGetReqParams->macAddr,
32304 &halLLStatsGetParams.sta_id))
32305 {
32306 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32307 MAC_ADDRESS_STR
32308 ": This station does not exist in the WDI Station Table",
32309 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
32310
32311 wpalMemoryFree(pSendBuffer);
32312 return WDI_STATUS_E_FAILURE;
32313 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032314
32315 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032316 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
32317
32318 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32319 " halLLStatsGetParams.req_id = %u",
32320 halLLStatsGetParams.req_id);
32321 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32322 " halLLStatsGetParams.staId = %u",
32323 halLLStatsGetParams.sta_id);
32324 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32325 " halLLStatsGetParams.Mask = %u",
32326 halLLStatsGetParams.param_id_mask);
32327
32328 wpalMemoryCopy(pSendBuffer+usDataOffset,
32329 &halLLStatsGetParams,
32330 sizeof(halLLStatsGetParams));
32331
32332 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32333
32334 /*-------------------------------------------------------------------------
32335 Send Clear Link Layer Stats Request to HAL
32336 -------------------------------------------------------------------------*/
32337 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32338 wdiLLStatsGetCb, pEventData->pUserData,
32339 WDI_LL_STATS_GET_RSP);
32340}
32341
32342/**
32343 @brief WDI_LLStatsClearReq
32344 This API is called to clear link layer stats request in FW
32345
32346 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32347 wdiLLStatsSetRspCb : clear link layer stats resp callback
32348 usrData : Client context
32349 @see
32350 @return SUCCESS or FAIL
32351*/
32352WDI_Status
32353WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32354 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32355 void* pUserData)
32356{
32357 WDI_EventInfoType wdiEventData;
32358
32359 /*------------------------------------------------------------------------
32360 Sanity Check
32361 ------------------------------------------------------------------------*/
32362 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32363 {
32364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32365 "WDI API call before module is initialized - Fail request");
32366
32367 return WDI_STATUS_E_NOT_ALLOWED;
32368 }
32369
32370 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32371 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32372 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32373 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32374 wdiEventData.pUserData = pUserData;
32375
32376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32377 "%s:%d Enter", __func__, __LINE__);
32378
32379 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32380}
32381
32382/**
32383 @brief WDI_ProcessLLStatsClearReq -
32384 Clear Link Layer Stats request to FW
32385
32386 @param pWDICtx : wdi context
32387 pEventData : indication data
32388
32389 @see
32390 @return none
32391*/
32392WDI_Status
32393WDI_ProcessLLStatsClearReq
32394(
32395 WDI_ControlBlockType* pWDICtx,
32396 WDI_EventInfoType* pEventData
32397)
32398{
32399 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32400 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32401 wpt_uint8* pSendBuffer = NULL;
32402 wpt_uint16 usSendSize = 0;
32403 wpt_uint16 usDataOffset = 0;
32404 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32405
32406 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32407 ( NULL == pEventData->pCBfnc ))
32408 {
32409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32410 "%s: Invalid parameters", __func__);
32411 WDI_ASSERT(0);
32412 return WDI_STATUS_E_FAILURE;
32413 }
32414
32415 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32416 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32417
32418 /*-----------------------------------------------------------------------
32419 Get message buffer
32420 ! TO DO : proper conversion into the HAL Message Request Format
32421 -----------------------------------------------------------------------*/
32422 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32423 pWDICtx,
32424 WDI_LL_STATS_CLEAR_REQ,
32425 sizeof(tHalMacLlClearStatsReqParams),
32426 &pSendBuffer, &usDataOffset,
32427 &usSendSize))||
32428 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32429 {
32430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32431 "Unable to get send buffer in %s %p %p %p", __func__,
32432 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32433 WDI_ASSERT(0);
32434 return WDI_STATUS_E_FAILURE;
32435 }
Dino Mycled3d50022014-07-07 12:58:25 +053032436 /* Need to fill in the self STA Index */
32437 if ( WDI_STATUS_SUCCESS !=
32438 WDI_STATableFindStaidByAddr(pWDICtx,
32439 pwdiLLStatsClearReqParams->macAddr,
32440 &halLLStatsClearParams.sta_id))
32441 {
32442 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32443 MAC_ADDRESS_STR
32444 ": This station does not exist in the WDI Station Table",
32445 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32446
32447 wpalMemoryFree(pSendBuffer);
32448 return WDI_STATUS_E_FAILURE;
32449 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032450
32451 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032452 halLLStatsClearParams.stats_clear_req_mask =
32453 pwdiLLStatsClearReqParams->statsClearReqMask;
32454 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32455
32456 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32457 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32458 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32459 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32460 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32461 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32462 halLLStatsClearParams.stats_clear_req_mask);
32463 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32464 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32465
32466 wpalMemoryCopy(pSendBuffer+usDataOffset,
32467 &halLLStatsClearParams,
32468 sizeof(halLLStatsClearParams));
32469
32470 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32471
32472 /*-------------------------------------------------------------------------
32473 Send Clear Link Layer Stats Request to HAL
32474 -------------------------------------------------------------------------*/
32475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32476 wdiLLStatsClearCb, pEventData->pUserData,
32477 WDI_LL_STATS_CLEAR_RSP);
32478}
32479#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032480
Abhishek Singh85b74712014-10-08 11:38:19 +053032481WDI_Status WDI_FWStatsGetReq( void* pUserData,
32482 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32483 wpt_uint32 stats)
32484{
32485 WDI_EventInfoType wdiEventData;
32486
32487 /*------------------------------------------------------------------------
32488 Sanity Check
32489 ------------------------------------------------------------------------*/
32490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32491 {
32492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32493 "WDI API call before module is initialized - Fail request");
32494 return WDI_STATUS_E_NOT_ALLOWED;
32495 }
32496 /*------------------------------------------------------------------------
32497 Fill in Event data and post to the Main FSM
32498 ------------------------------------------------------------------------*/
32499 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32500 wdiEventData.pEventData = (void *)&stats;
32501 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32502 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32503 wdiEventData.pUserData = pUserData;
32504
32505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32506
32507}
32508
Katya Nigamf0511f62015-05-05 16:40:57 +053032509WDI_Status
32510WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032511 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032512 void* pUserData)
32513{
32514 WDI_EventInfoType wdiEventData;
32515
32516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32517 "%s", __func__);
32518
32519 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32520 {
32521 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32522 "WDI API call before module is initialized - Fail request");
32523
32524 return WDI_STATUS_E_NOT_ALLOWED;
32525 }
32526
32527 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32528 wdiEventData.pEventData = pwdiMonStartReqParams;
32529 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032530 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032531 wdiEventData.pUserData = pUserData;
32532
32533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32534}
32535
32536WDI_Status
32537WDI_ProcessMonStartReq
32538(
32539 WDI_ControlBlockType* pWDICtx,
32540 WDI_EventInfoType* pEventData
32541)
32542{
32543 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032544 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032545 wpt_uint8* pSendBuffer = NULL;
32546 wpt_uint16 usSendSize = 0;
32547 wpt_uint16 usDataOffset = 0;
32548 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32549
32550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32551 "%s", __func__);
32552
32553 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32554 ( NULL == pEventData->pCBfnc ))
32555 {
32556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32557 "%s: Invalid parameters", __func__);
32558 WDI_ASSERT(0);
32559 return WDI_STATUS_E_FAILURE;
32560 }
32561
32562 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032563 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032564
32565 /*-----------------------------------------------------------------------
32566 Get message buffer
32567 ! TO DO : proper conversion into the HAL Message Request Format
32568 -----------------------------------------------------------------------*/
32569 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32570 pWDICtx,
32571 WDI_MON_START_REQ,
32572 sizeof(tHalEnableMonitorModeReqParams),
32573 &pSendBuffer, &usDataOffset,
32574 &usSendSize))||
32575 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32576 {
32577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32578 "Unable to get send buffer in %s %p %p %p", __func__,
32579 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32580 WDI_ASSERT(0);
32581 return WDI_STATUS_E_FAILURE;
32582 }
32583
32584 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32585 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32586 pwdiMonStartReqParams->ChannelBW);
32587 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32588 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32589 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32590 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32591 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32592 pwdiMonStartReqParams->mmFilters[0].macAddr,
32593 sizeof( wpt_macAddr ));
32594 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32595 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32596 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32597 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32598
32599 wpalMemoryCopy(pSendBuffer+usDataOffset,
32600 &halEnableMonitorModeParams,
32601 sizeof(halEnableMonitorModeParams));
32602
32603 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32604
32605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32606 wdiMonStartCb, pEventData->pUserData,
32607 WDI_MON_START_RSP);
32608}
32609
32610WDI_Status
32611WDI_ProcessMonStartRsp
32612(
32613 WDI_ControlBlockType* pWDICtx,
32614 WDI_EventInfoType* pEventData
32615)
32616{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032617 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032618
32619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32620 "%s: Enter ", __func__);
32621 /*-------------------------------------------------------------------------
32622 Sanity check
32623 -------------------------------------------------------------------------*/
32624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32625 ( NULL == pEventData->pEventData))
32626 {
32627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32628 "%s: Invalid parameters", __func__);
32629 WDI_ASSERT(0);
32630 return WDI_STATUS_E_FAILURE;
32631 }
32632
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032633 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032634
32635 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32636
32637 return WDI_STATUS_SUCCESS;
32638}
32639
32640WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032641WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032642 void* pUserData)
32643{
32644 WDI_EventInfoType wdiEventData;
32645
32646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32647 "%s", __func__);
32648
32649 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32650 {
32651 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32652 "WDI API call before module is initialized - Fail request");
32653
32654 return WDI_STATUS_E_NOT_ALLOWED;
32655 }
32656
32657 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32658 wdiEventData.pEventData = NULL;
32659 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032660 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032661 wdiEventData.pUserData = pUserData;
32662
32663 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32664}
32665
32666WDI_Status
32667WDI_ProcessMonStopReq
32668(
32669 WDI_ControlBlockType* pWDICtx,
32670 WDI_EventInfoType* pEventData
32671)
32672{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032673 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032674 wpt_uint8* pSendBuffer = NULL;
32675 wpt_uint16 usSendSize = 0;
32676 wpt_uint16 usDataOffset = 0;
32677 wpt_uint8 resetConfiguration;
32678
32679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32680 "%s", __func__);
32681
32682 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32683 {
32684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32685 "%s: Invalid parameters", __func__);
32686 WDI_ASSERT(0);
32687 return WDI_STATUS_E_FAILURE;
32688 }
32689
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032690 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032691
32692 /*-----------------------------------------------------------------------
32693 Get message buffer
32694 ! TO DO : proper conversion into the HAL Message Request Format
32695 -----------------------------------------------------------------------*/
32696 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32697 pWDICtx,
32698 WDI_MON_STOP_REQ,
32699 sizeof(wpt_uint8),
32700 &pSendBuffer, &usDataOffset,
32701 &usSendSize))||
32702 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32703 {
32704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32705 "Unable to get send buffer in %s %p %p", __func__,
32706 pEventData, wdiMonStopCb);
32707 WDI_ASSERT(0);
32708 return WDI_STATUS_E_FAILURE;
32709 }
32710
32711 wpalMemoryCopy(pSendBuffer+usDataOffset,
32712 &resetConfiguration,
32713 sizeof(wpt_uint8));
32714
32715 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32716
32717 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32718 wdiMonStopCb, pEventData->pUserData,
32719 WDI_MON_STOP_RSP);
32720}
32721
32722WDI_Status
32723WDI_ProcessMonStopRsp
32724(
32725 WDI_ControlBlockType* pWDICtx,
32726 WDI_EventInfoType* pEventData
32727)
32728{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032729 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032730
32731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32732 "%s: Enter ", __func__);
32733 /*-------------------------------------------------------------------------
32734 Sanity check
32735 -------------------------------------------------------------------------*/
32736 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32737 {
32738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32739 "%s: Invalid parameters", __func__);
32740 WDI_ASSERT(0);
32741 return WDI_STATUS_E_FAILURE;
32742 }
32743
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032744 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032745
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032746 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053032747
32748 return WDI_STATUS_SUCCESS;
32749}
32750
Dino Mycle41bdc942014-06-10 11:30:24 +053032751#ifdef WLAN_FEATURE_EXTSCAN
32752
32753/**
32754 @brief Process EXTSCAN BUffer full indication from FW
32755
32756 @param pWDICtx: pointer to the WLAN DAL context
32757 pEventData: pointer to the event information structure
32758
32759 @see
32760 @return Result of the function call
32761*/
32762WDI_Status
32763WDI_ProcessEXTScanProgressInd
32764(
32765 WDI_ControlBlockType* pWDICtx,
32766 WDI_EventInfoType* pEventData
32767)
32768{
32769 WDI_LowLevelIndType wdiInd;
32770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32771
32772 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32773 "%s: ", __func__);
32774
32775 /* sanity check */
32776 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32777 ( NULL == pEventData->pEventData))
32778 {
32779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32780 "%s: Invalid parameters", __func__);
32781 WDI_ASSERT(0);
32782 return WDI_STATUS_E_FAILURE;
32783 }
32784
32785 /* Fill in the indication parameters */
32786 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32787
32788 /* extract response and send it to UMAC */
32789 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32790
32791 /* Notify UMAC */
32792 if (pWDICtx->wdiLowLevelIndCB)
32793 {
32794 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32795 }
32796 else
32797 {
Dino Mycled3d50022014-07-07 12:58:25 +053032798 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032799 "%s: WDILowLevelIndCb is null", __func__);
32800 WDI_ASSERT(0);
32801 return WDI_STATUS_E_FAILURE;
32802 }
32803 return WDI_STATUS_SUCCESS;
32804
32805} /* End of WDI_ProcessEXTScanProgressInd */
32806
32807
32808/**
32809 @brief Process EXTScan Scan Available indication from FW
32810
32811 @param pWDICtx: pointer to the WLAN DAL context
32812 pEventData: pointer to the event information structure
32813
32814 @see
32815 @return Result of the function call
32816*/
32817WDI_Status
32818WDI_ProcessEXTScanScanAvailableInd
32819(
32820 WDI_ControlBlockType* pWDICtx,
32821 WDI_EventInfoType* pEventData
32822)
32823{
32824 WDI_LowLevelIndType wdiInd;
32825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32826
32827 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32828 "%s: ", __func__);
32829
32830 /* sanity check */
32831 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32832 ( NULL == pEventData->pEventData))
32833 {
32834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32835 "%s: Invalid parameters", __func__);
32836 WDI_ASSERT(0);
32837 return WDI_STATUS_E_FAILURE;
32838 }
32839
32840
32841
32842 /* Fill in the indication parameters */
32843 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32844
32845 /* extract response and send it to UMAC */
32846 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32847
32848 /* Notify UMAC */
32849 if (pWDICtx->wdiLowLevelIndCB)
32850 {
32851 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32852 }
32853 else
32854 {
32855 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32856 "%s: WDILowLevelIndCb is null", __func__);
32857 WDI_ASSERT(0);
32858 return WDI_STATUS_E_FAILURE;
32859 }
32860 return WDI_STATUS_SUCCESS;
32861} /* End of WDI_ProcessEXTScanScanDoneInd */
32862
32863/**
32864 @brief Process EXTScan Result Indication indication from FW
32865
32866 @param pWDICtx: pointer to the WLAN DAL context
32867 pEventData: pointer to the event information structure
32868
32869 @see
32870 @return Result of the function call
32871*/
32872WDI_Status
32873WDI_ProcessEXTScanResultInd
32874(
32875 WDI_ControlBlockType* pWDICtx,
32876 WDI_EventInfoType* pEventData
32877)
32878{
32879 WDI_LowLevelIndType wdiInd;
32880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32881
32882 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32883 "%s: ", __func__);
32884
32885 /* sanity check */
32886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32887 ( NULL == pEventData->pEventData))
32888 {
32889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32890 "%s: Invalid parameters", __func__);
32891 WDI_ASSERT(0);
32892 return WDI_STATUS_E_FAILURE;
32893 }
32894
32895 /* Fill in the indication parameters */
32896 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32897
32898 /* extract response and send it to UMAC */
32899 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32900
32901 /* Notify UMAC */
32902 if (pWDICtx->wdiLowLevelIndCB)
32903 {
32904 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32905 }
32906 else
32907 {
32908 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32909 "%s: WDILowLevelIndCb is null", __func__);
32910 WDI_ASSERT(0);
32911 return WDI_STATUS_E_FAILURE;
32912 }
32913 return WDI_STATUS_SUCCESS;
32914} /* End of WDI_ProcessEXTScanResultInd */
32915
32916/**
32917 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32918
32919 @param pWDICtx: pointer to the WLAN DAL context
32920 pEventData: pointer to the event information structure
32921
32922 @see
32923 @return Result of the function call
32924*/
32925WDI_Status
32926WDI_ProcessEXTScanBssidHotListResultInd
32927(
32928 WDI_ControlBlockType* pWDICtx,
32929 WDI_EventInfoType* pEventData
32930)
32931{
32932 WDI_LowLevelIndType wdiInd;
32933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32934
32935 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32936 "%s: ", __func__);
32937
32938 /* sanity check */
32939 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32940 ( NULL == pEventData->pEventData))
32941 {
32942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32943 "%s: Invalid parameters", __func__);
32944 WDI_ASSERT(0);
32945 return WDI_STATUS_E_FAILURE;
32946 }
32947
32948 /* Fill in the indication parameters */
32949 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32950
32951 /* extract response and send it to UMAC */
32952 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32953
32954 /* Notify UMAC */
32955 if (pWDICtx->wdiLowLevelIndCB)
32956 {
32957 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32958 }
32959 else
32960 {
32961 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32962 "%s: WDILowLevelIndCb is null", __func__);
32963 WDI_ASSERT(0);
32964 return WDI_STATUS_E_FAILURE;
32965 }
32966 return WDI_STATUS_SUCCESS;
32967} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32968
32969/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053032970 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
32971
32972 @param pWDICtx: pointer to the WLAN DAL context
32973 pEventData: pointer to the event information structure
32974
32975 @see
32976 @return Result of the function call
32977*/
32978WDI_Status
32979WDI_ProcessEXTScanSsidHotListResultInd
32980(
32981 WDI_ControlBlockType* pWDICtx,
32982 WDI_EventInfoType* pEventData
32983)
32984{
32985 WDI_LowLevelIndType wdiInd;
32986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32987
32988 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32989 "%s: ", __func__);
32990
32991 /* sanity check */
32992 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32993 ( NULL == pEventData->pEventData))
32994 {
32995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32996 "%s: Invalid parameters", __func__);
32997 WDI_ASSERT(0);
32998 return WDI_STATUS_E_FAILURE;
32999 }
33000
33001 /* Fill in the indication parameters */
33002 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
33003
33004 /* extract response and send it to UMAC */
33005 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
33006
33007 /* Notify UMAC */
33008 if (pWDICtx->wdiLowLevelIndCB)
33009 {
33010 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
33011 }
33012 else
33013 {
33014 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33015 "%s: WDILowLevelIndCb is null", __func__);
33016 WDI_ASSERT(0);
33017 return WDI_STATUS_E_FAILURE;
33018 }
33019 return WDI_STATUS_SUCCESS;
33020} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
33021
33022
33023/**
Dino Mycle41bdc942014-06-10 11:30:24 +053033024 @brief WDI_EXTScanGetCapabilitiesReq
33025
33026 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
33027 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
33028 of the Req operation received from the device
33029 pUserData: user data will be passed back with the callback
33030
33031 @return SUCCESS or FAIL
33032*/
33033WDI_Status
33034WDI_EXTScanGetCapabilitiesReq(
33035 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
33036 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
33037 void* pUserData)
33038{
33039 WDI_EventInfoType wdiEventData;
33040
33041 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33042 "%s: %d ",__func__, __LINE__);
33043 /*------------------------------------------------------------------------
33044 Sanity Check
33045 ------------------------------------------------------------------------*/
33046 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33047 {
33048 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33049 "WDI API call before module is initialized - Fail request");
33050
33051 return WDI_STATUS_E_NOT_ALLOWED;
33052 }
33053
33054 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
33055 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
33056 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
33057 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
33058 wdiEventData.pUserData = pUserData;
33059
33060 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33061}
33062
33063/**
33064 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
33065 Extended Scan Get Capability request to FW
33066
33067 @param pWDICtx : wdi context
33068 pEventData : indication data
33069
33070 @see
33071 @return none
33072*/
33073WDI_Status
33074WDI_ProcessEXTScanGetCapabilitiesReq
33075(
33076 WDI_ControlBlockType* pWDICtx,
33077 WDI_EventInfoType* pEventData
33078)
33079{
33080 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
33081 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33082 wpt_uint8* pSendBuffer = NULL;
33083 wpt_uint16 usSendSize = 0;
33084 wpt_uint16 usDataOffset = 0;
33085 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
33086
33087 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33088 "%s: %d Enter",__func__, __LINE__);
33089
33090 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33091 ( NULL == pEventData->pCBfnc ))
33092 {
33093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33094 "%s: Invalid parameters", __func__);
33095 WDI_ASSERT(0);
33096 return WDI_STATUS_E_FAILURE;
33097 }
33098
33099 pwdiEXTScanGetCapabilitiesReqParams =
33100 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
33101 wdiEXTScanGetCapabilitiesRspCb =
33102 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
33103
33104 /*-----------------------------------------------------------------------
33105 Get message buffer
33106 ! TO DO : proper conversion into the HAL Message Request Format
33107 -----------------------------------------------------------------------*/
33108 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33109 pWDICtx,
33110 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
33111 sizeof(halEXTScanGetCapReqParams),
33112 &pSendBuffer, &usDataOffset,
33113 &usSendSize))||
33114 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
33115 {
33116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33117 "Unable to get send buffer in %s %p %p %p", __func__,
33118 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
33119 wdiEXTScanGetCapabilitiesRspCb);
33120 WDI_ASSERT(0);
33121 return WDI_STATUS_E_FAILURE;
33122 }
33123
33124 halEXTScanGetCapReqParams.requestId =
33125 pwdiEXTScanGetCapabilitiesReqParams->requestId;
33126 halEXTScanGetCapReqParams.sessionId =
33127 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
33128
33129 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33130 " requestId %u "
33131 " sessionId %u ",
33132 halEXTScanGetCapReqParams.requestId,
33133 halEXTScanGetCapReqParams.sessionId);
33134
33135 wpalMemoryCopy(pSendBuffer+usDataOffset,
33136 &halEXTScanGetCapReqParams,
33137 sizeof(halEXTScanGetCapReqParams));
33138
33139 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33140
33141
33142 /*-------------------------------------------------------------------------
33143 Send EXTScan Stop Request to HAL
33144 -------------------------------------------------------------------------*/
33145 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33146 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
33147 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
33148}
33149
33150/**
33151 @brief WDI_EXTScanGetCachedResultsReq
33152
33153 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
33154 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
33155 of the Req operation received from the device
33156 pUserData: user data will be passed back with the callback
33157
33158 @return SUCCESS or FAIL
33159*/
33160
33161WDI_Status
33162WDI_EXTScanGetCachedResultsReq(
33163 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
33164 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
33165 void* pUserData)
33166{
33167 WDI_EventInfoType wdiEventData;
33168
33169 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33170 "%s: %d Enter",__func__, __LINE__);
33171 /*------------------------------------------------------------------------
33172 Sanity Check
33173 ------------------------------------------------------------------------*/
33174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33175 {
33176 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33177 "WDI API call before module is initialized - Fail request");
33178
33179 return WDI_STATUS_E_NOT_ALLOWED;
33180 }
33181
33182 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
33183 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
33184 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
33185 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
33186 wdiEventData.pUserData = pUserData;
33187
33188 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33189}
33190
33191/**
33192 @brief WDI_ProcessEXTScanGetCachedResultsReq -
33193 Extended Scan Get Cached Result request to FW
33194
33195 @param pWDICtx : wdi context
33196 pEventData : indication data
33197
33198 @see
33199 @return none
33200*/
33201WDI_Status
33202WDI_ProcessEXTScanGetCachedResultsReq
33203(
33204 WDI_ControlBlockType* pWDICtx,
33205 WDI_EventInfoType* pEventData
33206)
33207{
33208 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
33209 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
33210 wpt_uint8* pSendBuffer = NULL;
33211 wpt_uint16 usSendSize = 0;
33212 wpt_uint16 usDataOffset = 0;
33213 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
33214
33215 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33216 "%s: %d Enter",__func__, __LINE__);
33217
33218 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33219 ( NULL == pEventData->pCBfnc ))
33220 {
33221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33222 "%s: Invalid parameters", __func__);
33223 WDI_ASSERT(0);
33224 return WDI_STATUS_E_FAILURE;
33225 }
33226
33227 pwdiEXTScanGetCachedResultsReqParams =
33228 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
33229 wdiEXTScanGetCachedResultsCb =
33230 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
33231
33232 /*-----------------------------------------------------------------------
33233 Get message buffer
33234 ! TO DO : proper conversion into the HAL Message Request Format
33235 -----------------------------------------------------------------------*/
33236 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33237 pWDICtx,
33238 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
33239 sizeof(tHalExtScanGetScanReq),
33240 &pSendBuffer, &usDataOffset,
33241 &usSendSize))||
33242 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
33243 {
33244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33245 "Unable to get send buffer in %s %p %p %p", __func__,
33246 pEventData, pwdiEXTScanGetCachedResultsReqParams,
33247 wdiEXTScanGetCachedResultsCb);
33248 WDI_ASSERT(0);
33249 return WDI_STATUS_E_FAILURE;
33250 }
33251
33252 halEXTScanGetScanReqParams.requestId =
33253 pwdiEXTScanGetCachedResultsReqParams->requestId;
33254 halEXTScanGetScanReqParams.sessionId =
33255 pwdiEXTScanGetCachedResultsReqParams->sessionId;
33256 halEXTScanGetScanReqParams.flush =
33257 pwdiEXTScanGetCachedResultsReqParams->flush;
33258
33259 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33260 " requestId %u "
33261 " sessionId %u "
33262 " flush %u ",
33263 halEXTScanGetScanReqParams.requestId,
33264 halEXTScanGetScanReqParams.sessionId,
33265 halEXTScanGetScanReqParams.flush);
33266
33267 wpalMemoryCopy(pSendBuffer+usDataOffset,
33268 &halEXTScanGetScanReqParams,
33269 sizeof(halEXTScanGetScanReqParams));
33270
33271 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33272
33273
33274 /*-------------------------------------------------------------------------
33275 Send EXTScan Stop Request to HAL
33276 -------------------------------------------------------------------------*/
33277 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33278 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
33279 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
33280}
33281
33282/**
33283 @brief WDI_EXTScanStopReq
33284
33285 @param WDI_EXTScanStopReqParams: Req parameter for the FW
33286 WDI_EXTScanStopRspCb: callback for passing back the response
33287 of the Req operation received from the device
33288 pUserData: user data will be passed back with the callback
33289
33290 @return SUCCESS or FAIL
33291*/
33292WDI_Status
33293WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
33294 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
33295 void* pUserData)
33296{
33297 WDI_EventInfoType wdiEventData;
33298
33299 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33300 "%s: %d ",__func__, __LINE__);
33301 /*------------------------------------------------------------------------
33302 Sanity Check
33303 ------------------------------------------------------------------------*/
33304 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33305 {
33306 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33307 "WDI API call before module is initialized - Fail request");
33308
33309 return WDI_STATUS_E_NOT_ALLOWED;
33310 }
33311
33312 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
33313 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
33314 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
33315 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
33316 wdiEventData.pUserData = pUserData;
33317
33318 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33319}
33320
33321/**
33322 @brief WDI_ProcessEXTScanStopReq -
33323 Extended Scan Stop request to FW
33324
33325 @param pWDICtx : wdi context
33326 pEventData : indication data
33327
33328 @see
33329 @return none
33330*/
33331WDI_Status
33332WDI_ProcessEXTScanStopReq
33333(
33334 WDI_ControlBlockType* pWDICtx,
33335 WDI_EventInfoType* pEventData
33336)
33337{
33338 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33339 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33340 wpt_uint8* pSendBuffer = NULL;
33341 wpt_uint16 usSendSize = 0;
33342 wpt_uint16 usDataOffset = 0;
33343 tHalExtScanStopReq halEXTScanStopReqParams;
33344
33345 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33346 "%s: %d ",__func__, __LINE__);
33347
33348 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33349 ( NULL == pEventData->pCBfnc ))
33350 {
33351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33352 "%s: Invalid parameters", __func__);
33353 WDI_ASSERT(0);
33354 return WDI_STATUS_E_FAILURE;
33355 }
33356
33357 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33358 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33359
33360 /*-----------------------------------------------------------------------
33361 Get message buffer
33362 ! TO DO : proper conversion into the HAL Message Request Format
33363 -----------------------------------------------------------------------*/
33364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33365 pWDICtx,
33366 WDI_EXTSCAN_STOP_REQ,
33367 sizeof(tHalExtScanStopReq),
33368 &pSendBuffer, &usDataOffset,
33369 &usSendSize))||
33370 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33371 {
33372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33373 "Unable to get send buffer in %s %p %p %p", __func__,
33374 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33375 WDI_ASSERT(0);
33376 return WDI_STATUS_E_FAILURE;
33377 }
33378
33379 halEXTScanStopReqParams.requestId =
33380 pwdiEXTScanStopReqParams->requestId;
33381 halEXTScanStopReqParams.sessionId =
33382 pwdiEXTScanStopReqParams->sessionId;
33383
33384 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33385 " halEXTScanStopReqParams.requestId %u "
33386 " halEXTScanStopReqParams.sessionId %u ",
33387 halEXTScanStopReqParams.requestId,
33388 halEXTScanStopReqParams.sessionId);
33389
33390 wpalMemoryCopy(pSendBuffer+usDataOffset,
33391 &halEXTScanStopReqParams,
33392 sizeof(halEXTScanStopReqParams));
33393
33394 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33395
33396
33397 /*-------------------------------------------------------------------------
33398 Send EXTScan Stop Request to HAL
33399 -------------------------------------------------------------------------*/
33400 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33401 wdiEXTScanStopCb, pEventData->pUserData,
33402 WDI_EXTSCAN_STOP_RSP);
33403}
33404
33405/**
33406 @brief WDI_EXTScanStartReq
33407
33408 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33409 WDI_EXTScanStartRspCb: callback for passing back the response
33410 of the Req operation received from the device
33411 pUserData: user data will be passed back with the callback
33412
33413 @return SUCCESS or FAIL
33414*/
33415WDI_Status
33416WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33417 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33418 void* pUserData)
33419{
33420 WDI_EventInfoType wdiEventData;
33421
33422 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33423 "%s: %d Enter",__func__, __LINE__);
33424 /*------------------------------------------------------------------------
33425 Sanity Check
33426 ------------------------------------------------------------------------*/
33427 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33428 {
33429 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33430 "WDI API call before module is initialized - Fail request");
33431
33432 return WDI_STATUS_E_NOT_ALLOWED;
33433 }
33434
33435 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33436 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33437 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33438 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33439 wdiEventData.pUserData = pUserData;
33440
33441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33442}
33443
33444/**
33445 @brief WDI_ProcessEXTScanStartReq -
33446 Extended Scan Start Request to FW
33447
33448 @param pWDICtx : wdi context
33449 pEventData : indication data
33450
33451 @see
33452 @return none
33453*/
33454WDI_Status
33455WDI_ProcessEXTScanStartReq
33456(
33457 WDI_ControlBlockType* pWDICtx,
33458 WDI_EventInfoType* pEventData
33459)
33460{
33461 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33462 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33463 wpt_uint8* pSendBuffer = NULL;
33464 wpt_uint16 usSendSize = 0;
33465 wpt_uint16 usDataOffset = 0;
33466 tpHalExtScanStartReq pHalExtScanStartReqParams;
33467 int i = 0;
33468 int j = 0;
33469
33470 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33471 "%s: %d Enter",__func__, __LINE__);
33472
33473 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33474 ( NULL == pEventData->pCBfnc ))
33475 {
33476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33477 "%s: Invalid parameters", __func__);
33478 WDI_ASSERT(0);
33479 return WDI_STATUS_E_FAILURE;
33480 }
33481
33482 pwdiEXTScanStartReqParams =
33483 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33484 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33485
33486 /*-----------------------------------------------------------------------
33487 Get message buffer
33488 ! TO DO : proper conversion into the HAL Message Request Format
33489 -----------------------------------------------------------------------*/
33490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33491 pWDICtx,
33492 WDI_EXTSCAN_START_REQ,
33493 sizeof(tHalExtScanStartReq),
33494 &pSendBuffer, &usDataOffset,
33495 &usSendSize))||
33496 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33497 {
33498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33499 "Unable to get send buffer in %s %p %p %p", __func__,
33500 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33501 WDI_ASSERT(0);
33502 return WDI_STATUS_E_FAILURE;
33503 }
33504
33505 pHalExtScanStartReqParams =
33506 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33507
33508 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33509 pHalExtScanStartReqParams->maxApPerScan =
33510 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033511 pHalExtScanStartReqParams->reportThresholdPercent =
33512 pwdiEXTScanStartReqParams->reportThresholdPercent;
33513 pHalExtScanStartReqParams->reportThresholdNumScans =
33514 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053033515 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33516 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33517 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033518 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053033519
33520 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33521 {
33522 pHalExtScanStartReqParams->bucketData[i].bucketId =
33523 pwdiEXTScanStartReqParams->buckets[i].bucket;
33524 pHalExtScanStartReqParams->bucketData[i].channelBand =
33525 pwdiEXTScanStartReqParams->buckets[i].band;
33526 pHalExtScanStartReqParams->bucketData[i].period =
33527 pwdiEXTScanStartReqParams->buckets[i].period;
33528 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33529 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033530 pHalExtScanStartReqParams->bucketData[i].max_period =
33531 pwdiEXTScanStartReqParams->buckets[i].max_period;
33532 pHalExtScanStartReqParams->bucketData[i].exponent =
33533 pwdiEXTScanStartReqParams->buckets[i].exponent;
33534 pHalExtScanStartReqParams->bucketData[i].step_count =
33535 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053033536 pHalExtScanStartReqParams->bucketData[i].numChannels =
33537 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33538
33539 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33540 {
33541 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33542 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33543 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33544 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33545 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33546 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33547 }
33548
33549 }
33550
33551
33552 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033553 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
33554 "reportThresholdNumScans %u requestId %u"
33555 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033556 pHalExtScanStartReqParams->basePeriod,
33557 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033558 pHalExtScanStartReqParams->reportThresholdPercent,
33559 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053033560 pHalExtScanStartReqParams->requestId,
33561 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033562 pHalExtScanStartReqParams->numBuckets,
33563 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053033564
33565 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33566 {
33567 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33568 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033569 " reportEvents %u numChannels %u "
33570 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053033571 pHalExtScanStartReqParams->bucketData[i].bucketId,
33572 pHalExtScanStartReqParams->bucketData[i].channelBand,
33573 pHalExtScanStartReqParams->bucketData[i].period,
33574 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033575 pHalExtScanStartReqParams->bucketData[i].numChannels,
33576 pHalExtScanStartReqParams->bucketData[i].max_period,
33577 pHalExtScanStartReqParams->bucketData[i].exponent,
33578 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053033579
33580 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33581 {
33582 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33583 "%d) channel %u dwellTimeMs %u passive %u ",j,
33584 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33585 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33586 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33587 }
33588
33589 }
33590
Dino Mycle41bdc942014-06-10 11:30:24 +053033591 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33592
33593 /*-------------------------------------------------------------------------
33594 Send EXTSCAN Start Request to HAL
33595 -------------------------------------------------------------------------*/
33596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33597 wdiEXTScanStartCb, pEventData->pUserData,
33598 WDI_EXTSCAN_START_RSP);
33599}
33600
33601/**
33602 @brief WDI_EXTScanSetBSSIDHotlistReq
33603
33604 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33605 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33606 of the Req operation received from the device
33607 pUserData: user data will be passed back with the callback
33608
33609 @return SUCCESS or FAIL
33610*/
33611WDI_Status
33612WDI_EXTScanSetBSSIDHotlistReq(
33613 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33614 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33615 void* pUserData)
33616{
33617 WDI_EventInfoType wdiEventData;
33618
33619 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33620 "%s: %d Enter ",__func__, __LINE__);
33621 /*------------------------------------------------------------------------
33622 Sanity Check
33623 ------------------------------------------------------------------------*/
33624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33625 {
33626 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33627 "WDI API call before module is initialized - Fail request");
33628
33629 return WDI_STATUS_E_NOT_ALLOWED;
33630 }
33631
33632 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33633 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33634 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33635 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33636 wdiEventData.pUserData = pUserData;
33637
33638 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33639}
33640
33641/**
33642 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33643 Extended Scan Set BSSSID Hotlist Request to FW
33644
33645 @param pWDICtx : wdi context
33646 pEventData : indication data
33647
33648 @see
33649 @return none
33650*/
33651WDI_Status
33652WDI_ProcessEXTScanSetBSSIDHotlistReq
33653(
33654 WDI_ControlBlockType* pWDICtx,
33655 WDI_EventInfoType* pEventData
33656)
33657{
33658 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33659 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33660 wpt_uint8* pSendBuffer = NULL;
33661 wpt_uint16 usSendSize = 0;
33662 wpt_uint16 usDataOffset = 0;
33663 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33664 int i;
33665
33666 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33667 "%s: %d Enter",__func__, __LINE__);
33668
33669 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33670 ( NULL == pEventData->pCBfnc ))
33671 {
33672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33673 "%s: Invalid parameters", __func__);
33674 WDI_ASSERT(0);
33675 return WDI_STATUS_E_FAILURE;
33676 }
33677
33678 pwdiEXTScanSetBSSIDHotlistReqParams =
33679 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33680 wdiEXTScanSetBSSIDHotlistRspCb =
33681 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33682
33683 /*-----------------------------------------------------------------------
33684 Get message buffer
33685 ! TO DO : proper conversion into the HAL Message Request Format
33686 -----------------------------------------------------------------------*/
33687 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33688 pWDICtx,
33689 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33690 sizeof(tHalBssidHotlistSetReq),
33691 &pSendBuffer, &usDataOffset,
33692 &usSendSize))||
33693 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33694 {
33695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33696 "Unable to get send buffer in %s %p %p %p", __func__,
33697 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33698 wdiEXTScanSetBSSIDHotlistRspCb);
33699 WDI_ASSERT(0);
33700 return WDI_STATUS_E_FAILURE;
33701 }
33702 pHalBssidHotlistSetReqParams =
33703 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33704
33705 pHalBssidHotlistSetReqParams->requestId =
33706 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33707
33708 pHalBssidHotlistSetReqParams->sessionId =
33709 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33710
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033711 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
33712 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
33713
33714 pHalBssidHotlistSetReqParams->numBssid =
33715 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053033716
33717 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33718
33719 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33720 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33721 WDI_MAC_ADDR_LEN);
33722
33723 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33724 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33725
33726 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33727 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33728
Dino Mycle41bdc942014-06-10 11:30:24 +053033729 }
33730
33731 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033732 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033733 pHalBssidHotlistSetReqParams->requestId,
33734 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033735 pHalBssidHotlistSetReqParams->numBssid,
33736 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053033737
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033738 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053033739
33740 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033741 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053033742 __func__, __LINE__, i,
33743 pHalBssidHotlistSetReqParams->ap[i].bssid,
33744 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033745 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053033746
33747 }
33748
33749 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33750
33751
33752 /*-------------------------------------------------------------------------
33753 Send EXTScan Stop Request to HAL
33754 -------------------------------------------------------------------------*/
33755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33756 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33757 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33758}
33759
33760/**
33761 @brief WDI_EXTScanResetBSSIDHotlistReq
33762
33763 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33764 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33765 of the Req operation received from the device
33766 pUserData: user data will be passed back with the callback
33767
33768 @return SUCCESS or FAIL
33769*/
33770WDI_Status
33771WDI_EXTScanResetBSSIDHotlistReq(
33772 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33773 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33774 void* pUserData)
33775{
33776 WDI_EventInfoType wdiEventData;
33777
33778 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33779 "%s: %d",__func__, __LINE__);
33780 /*------------------------------------------------------------------------
33781 Sanity Check
33782 ------------------------------------------------------------------------*/
33783 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33784 {
33785 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33786 "WDI API call before module is initialized - Fail request");
33787
33788 return WDI_STATUS_E_NOT_ALLOWED;
33789 }
33790
33791 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33792 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33793 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33794 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33795 wdiEventData.pUserData = pUserData;
33796
33797 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33798}
33799
33800/**
33801 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33802 Extended Scan reset BSSID hotlist Request to FW
33803
33804 @param pWDICtx : wdi context
33805 pEventData : indication data
33806
33807 @see
33808 @return none
33809*/
33810WDI_Status
33811WDI_ProcessEXTScanResetBSSIDHotlistReq
33812(
33813 WDI_ControlBlockType* pWDICtx,
33814 WDI_EventInfoType* pEventData
33815)
33816{
33817 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33818 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33819 wpt_uint8* pSendBuffer = NULL;
33820 wpt_uint16 usSendSize = 0;
33821 wpt_uint16 usDataOffset = 0;
33822 tpHalHotlistResetReq pHalHotlistResetReqParams;
33823
33824 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33825 "%s: %d",__func__, __LINE__);
33826
33827 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33828 ( NULL == pEventData->pCBfnc ))
33829 {
33830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33831 "%s: Invalid parameters", __func__);
33832 WDI_ASSERT(0);
33833 return WDI_STATUS_E_FAILURE;
33834 }
33835
33836 pwdiEXTScanResetBSSIDHotlistReqParams =
33837 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33838 wdiEXTScanResetBSSIDHotlistRspCb =
33839 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33840
33841 /*-----------------------------------------------------------------------
33842 Get message buffer
33843 ! TO DO : proper conversion into the HAL Message Request Format
33844 -----------------------------------------------------------------------*/
33845 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33846 pWDICtx,
33847 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33848 sizeof(tHalHotlistResetReq),
33849 &pSendBuffer, &usDataOffset,
33850 &usSendSize))||
33851 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33852 {
33853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33854 "Unable to get send buffer in %s %p %p %p", __func__,
33855 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33856 wdiEXTScanResetBSSIDHotlistRspCb);
33857 WDI_ASSERT(0);
33858 return WDI_STATUS_E_FAILURE;
33859 }
33860 pHalHotlistResetReqParams =
33861 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33862
33863 pHalHotlistResetReqParams->requestId =
33864 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33865
33866 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33867
33868 /*-------------------------------------------------------------------------
33869 Send EXTScan Stop Request to HAL
33870 -------------------------------------------------------------------------*/
33871 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33872 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33873 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33874}
33875
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053033876
33877/**
33878 @brief WDI_EXTScanSetSSIDHotlistReq
33879
33880 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
33881 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
33882 of the Req operation received from the device
33883 pUserData: user data will be passed back with the callback
33884
33885 @return SUCCESS or FAIL
33886*/
33887WDI_Status
33888WDI_EXTScanSetSSIDHotlistReq(
33889 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
33890 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
33891 void* pUserData)
33892{
33893 WDI_EventInfoType wdiEventData;
33894
33895 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33896 "%s: %d Enter ",__func__, __LINE__);
33897 /*------------------------------------------------------------------------
33898 Sanity Check
33899 ------------------------------------------------------------------------*/
33900 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33901 {
33902 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33903 "WDI API call before module is initialized - Fail request");
33904
33905 return WDI_STATUS_E_NOT_ALLOWED;
33906 }
33907
33908 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
33909 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
33910 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
33911 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
33912 wdiEventData.pUserData = pUserData;
33913
33914 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33915}
33916
33917/**
33918 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
33919 Extended Scan Set SSSID Hotlist Request to FW
33920
33921 @param pWDICtx : wdi context
33922 pEventData : indication data
33923
33924 @see
33925 @return none
33926*/
33927WDI_Status
33928WDI_ProcessEXTScanSetSSIDHotlistReq
33929(
33930 WDI_ControlBlockType* pWDICtx,
33931 WDI_EventInfoType* pEventData
33932)
33933{
33934 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
33935 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
33936 wpt_uint8* pSendBuffer = NULL;
33937 wpt_uint16 usSendSize = 0;
33938 wpt_uint16 usDataOffset = 0;
33939 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
33940 int i;
33941
33942 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33943 "%s: %d Enter",__func__, __LINE__);
33944
33945 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33946 ( NULL == pEventData->pCBfnc ))
33947 {
33948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33949 "%s: Invalid parameters", __func__);
33950 WDI_ASSERT(0);
33951 return WDI_STATUS_E_FAILURE;
33952 }
33953
33954 pwdiEXTScanSetSSIDHotlistReqParams =
33955 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
33956 wdiEXTScanSetSSIDHotlistRspCb =
33957 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
33958
33959 /*-----------------------------------------------------------------------
33960 Get message buffer
33961 ! TO DO : proper conversion into the HAL Message Request Format
33962 -----------------------------------------------------------------------*/
33963 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33964 pWDICtx,
33965 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
33966 sizeof(tHalSsidHotlistSetReq),
33967 &pSendBuffer, &usDataOffset,
33968 &usSendSize))||
33969 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
33970 {
33971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33972 "Unable to get send buffer in %s %p %p %p", __func__,
33973 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
33974 wdiEXTScanSetSSIDHotlistRspCb);
33975 WDI_ASSERT(0);
33976 return WDI_STATUS_E_FAILURE;
33977 }
33978 pHalSsidHotlistSetReqParams =
33979 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
33980
33981 pHalSsidHotlistSetReqParams->requestId =
33982 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
33983
33984 pHalSsidHotlistSetReqParams->sessionId =
33985 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
33986
33987 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
33988 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
33989
33990 pHalSsidHotlistSetReqParams->numSsid =
33991 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
33992
33993 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33994
33995 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
33996 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
33997 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
33998 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
33999
34000 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
34001 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
34002
34003 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
34004 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
34005
34006 pHalSsidHotlistSetReqParams->ssid[i].band =
34007 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
34008 }
34009
34010 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34011 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
34012 pHalSsidHotlistSetReqParams->requestId,
34013 pHalSsidHotlistSetReqParams->sessionId,
34014 pHalSsidHotlistSetReqParams->numSsid,
34015 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
34016
34017 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
34018
34019 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34020 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
34021 __func__, __LINE__, i,
34022 pHalSsidHotlistSetReqParams->ssid[i].ssid,
34023 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
34024 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
34025 pHalSsidHotlistSetReqParams->ssid[i].band);
34026 }
34027
34028 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34029
34030
34031 /*-------------------------------------------------------------------------
34032 Send EXTScan Stop Request to HAL
34033 -------------------------------------------------------------------------*/
34034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34035 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
34036 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
34037}
34038
34039/**
34040 @brief WDI_EXTScanResetSSIDHotlistReq
34041
34042 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
34043 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
34044 of the Req operation received from the device
34045 pUserData: user data will be passed back with the callback
34046
34047 @return SUCCESS or FAIL
34048*/
34049WDI_Status
34050WDI_EXTScanResetSSIDHotlistReq(
34051 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
34052 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
34053 void* pUserData)
34054{
34055 WDI_EventInfoType wdiEventData;
34056
34057 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34058 "%s: %d",__func__, __LINE__);
34059 /*------------------------------------------------------------------------
34060 Sanity Check
34061 ------------------------------------------------------------------------*/
34062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34063 {
34064 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34065 "WDI API call before module is initialized - Fail request");
34066
34067 return WDI_STATUS_E_NOT_ALLOWED;
34068 }
34069
34070 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
34071 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
34072 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
34073 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
34074 wdiEventData.pUserData = pUserData;
34075
34076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34077}
34078
34079/**
34080 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
34081 Extended Scan reset SSID hotlist Request to FW
34082
34083 @param pWDICtx : wdi context
34084 pEventData : indication data
34085
34086 @see
34087 @return none
34088*/
34089WDI_Status
34090WDI_ProcessEXTScanResetSSIDHotlistReq
34091(
34092 WDI_ControlBlockType* pWDICtx,
34093 WDI_EventInfoType* pEventData
34094)
34095{
34096 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
34097 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34098 wpt_uint8* pSendBuffer = NULL;
34099 wpt_uint16 usSendSize = 0;
34100 wpt_uint16 usDataOffset = 0;
34101 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
34102
34103 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34104 "%s: %d",__func__, __LINE__);
34105
34106 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34107 ( NULL == pEventData->pCBfnc ))
34108 {
34109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34110 "%s: Invalid parameters", __func__);
34111 WDI_ASSERT(0);
34112 return WDI_STATUS_E_FAILURE;
34113 }
34114
34115 pwdiEXTScanResetSSIDHotlistReqParams =
34116 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
34117 wdiEXTScanResetSSIDHotlistRspCb =
34118 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
34119
34120 /*-----------------------------------------------------------------------
34121 Get message buffer
34122 ! TO DO : proper conversion into the HAL Message Request Format
34123 -----------------------------------------------------------------------*/
34124 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34125 pWDICtx,
34126 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
34127 sizeof(tHalSsidHotlistResetReq),
34128 &pSendBuffer, &usDataOffset,
34129 &usSendSize))||
34130 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
34131 {
34132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34133 "Unable to get send buffer in %s %p %p %p", __func__,
34134 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
34135 wdiEXTScanResetSSIDHotlistRspCb);
34136 WDI_ASSERT(0);
34137 return WDI_STATUS_E_FAILURE;
34138 }
34139 pHalSsidHotlistResetReqParams =
34140 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
34141
34142 pHalSsidHotlistResetReqParams->requestId =
34143 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
34144
34145 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34146
34147 /*-------------------------------------------------------------------------
34148 Send RESET_HOTLIST_SSID Request to HAL
34149 -------------------------------------------------------------------------*/
34150 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34151 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
34152 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
34153}
34154
34155
Dino Mycle41bdc942014-06-10 11:30:24 +053034156/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053034157 @brief WDI_HighPriorityDataInfoInd
34158
34159 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
34160
34161 @return SUCCESS or FAIL
34162*/
34163WDI_Status
34164WDI_HighPriorityDataInfoInd
34165(
34166 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
34167)
34168{
34169 WDI_EventInfoType wdiEventData;
34170
34171 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34172 "%s: %d",__func__, __LINE__);
34173 /*------------------------------------------------------------------------
34174 Sanity Check
34175 ------------------------------------------------------------------------*/
34176 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34177 {
34178 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34179 "WDI API call before module is initialized - Fail request");
34180
34181 return WDI_STATUS_E_NOT_ALLOWED;
34182 }
34183
34184 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
34185 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
34186 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
34187 wdiEventData.pCBfnc = NULL;
34188 wdiEventData.pUserData = NULL;
34189
34190 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34191}
34192
34193/**
34194 @brief WDI_ProcessHighPriorityDataInfoInd -
34195 Send WFD indication to FW
34196
34197 @param pWDICtx : wdi context
34198 pEventData : indication data
34199
34200 @see
34201 @return none
34202*/
34203WDI_Status
34204WDI_ProcessHighPriorityDataInfoInd
34205(
34206 WDI_ControlBlockType* pWDICtx,
34207 WDI_EventInfoType* pEventData
34208)
34209{
34210 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
34211 wpt_uint8* pSendBuffer = NULL;
34212 wpt_uint16 usSendSize = 0;
34213 wpt_uint16 usDataOffset = 0;
34214 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
34215 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34216
34217 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34218 "%s: %d",__func__, __LINE__);
34219
34220 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34221 ( NULL == pEventData->pEventData))
34222 {
34223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34224 "%s: Invalid parameters", __func__);
34225 WDI_ASSERT(0);
34226 return WDI_STATUS_E_FAILURE;
34227 }
34228
34229 pHighPriorityDataInfoIndParams =
34230 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
34231
34232 /*-----------------------------------------------------------------------
34233 Get message buffer
34234 -----------------------------------------------------------------------*/
34235 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34236 pWDICtx,
34237 WDI_HIGH_PRIORITY_DATA_INFO_IND,
34238 sizeof(tHalHighPriorityDataInfoInd),
34239 &pSendBuffer, &usDataOffset,
34240 &usSendSize))||
34241 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
34242 {
34243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34244 "Unable to get send buffer in %s %p %p", __func__,
34245 pEventData, pHighPriorityDataInfoIndParams);
34246 WDI_ASSERT(0);
34247 return WDI_STATUS_E_FAILURE;
34248 }
34249 pHalHighPriorityDataInfoIndParams =
34250 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
34251
34252 pHalHighPriorityDataInfoIndParams->pause =
34253 pHighPriorityDataInfoIndParams->pause;
34254
34255 pWDICtx->pReqStatusUserData = NULL;
34256 pWDICtx->pfncRspCB = NULL;
34257
34258 /*-------------------------------------------------------------------------
34259 Send HIGH_PRIORITY_DATA_INFO Request to HAL
34260 -------------------------------------------------------------------------*/
34261 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34262 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34263}
34264
34265/**
Dino Mycle41bdc942014-06-10 11:30:24 +053034266 @brief Process Extended Scan Start Rsp function (called when a response
34267 is being received over the bus from HAL)
34268
34269 @param pWDICtx: pointer to the WLAN DAL context
34270 pEventData: pointer to the event information structure
34271
34272 @see
34273 @return Result of the function call
34274*/
34275WDI_Status
34276WDI_ProcessEXTScanStartRsp
34277(
34278 WDI_ControlBlockType* pWDICtx,
34279 WDI_EventInfoType* pEventData
34280)
34281{
34282 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
34283
34284 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34285 "%s: %d",__func__, __LINE__);
34286 /*-------------------------------------------------------------------------
34287 Sanity check
34288 -------------------------------------------------------------------------*/
34289 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34290 ( NULL == pEventData->pEventData))
34291 {
34292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34293 "%s: Invalid parameters", __func__);
34294 WDI_ASSERT(0);
34295 return WDI_STATUS_E_FAILURE;
34296 }
34297
34298 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34299 if ( NULL == wdiEXTScanStartRspCb)
34300 {
34301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34302 "%s: Callback function Invalid", __func__);
34303 WDI_ASSERT(0);
34304 return WDI_STATUS_E_FAILURE;
34305 }
34306
34307 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
34308
34309 return WDI_STATUS_SUCCESS;
34310}
34311
34312
34313/**
34314 @brief Process Extended Scan Stop Rsp function (called when a response
34315 is being received over the bus from HAL)
34316
34317 @param pWDICtx: pointer to the WLAN DAL context
34318 pEventData: pointer to the event information structure
34319
34320 @see
34321 @return Result of the function call
34322*/
34323WDI_Status
34324WDI_ProcessEXTScanStopRsp
34325(
34326 WDI_ControlBlockType* pWDICtx,
34327 WDI_EventInfoType* pEventData
34328)
34329{
34330 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
34331
34332 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34333 "%s: %d",__func__, __LINE__);
34334
34335
34336 /*-------------------------------------------------------------------------
34337 Sanity check
34338 -------------------------------------------------------------------------*/
34339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34340 ( NULL == pEventData->pEventData))
34341 {
34342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34343 "%s: Invalid parameters", __func__);
34344 WDI_ASSERT(0);
34345 return WDI_STATUS_E_FAILURE;
34346 }
34347
34348 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34349 if ( NULL == wdiEXTScanStopRspCb)
34350 {
34351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34352 "%s: Callback function Invalid", __func__);
34353 WDI_ASSERT(0);
34354 return WDI_STATUS_E_FAILURE;
34355 }
34356
34357 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34358
34359 return WDI_STATUS_SUCCESS;
34360}
34361
34362/**
34363 @brief Process Extended Scan Get Cached Rsp function (called when a response
34364 is being received over the bus from HAL)
34365
34366 @param pWDICtx: pointer to the WLAN DAL context
34367 pEventData: pointer to the event information structure
34368
34369 @see
34370 @return Result of the function call
34371*/
34372WDI_Status
34373WDI_ProcessEXTScanGetCachedResultsRsp
34374(
34375 WDI_ControlBlockType* pWDICtx,
34376 WDI_EventInfoType* pEventData
34377)
34378{
34379 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
34380
34381 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34382 "%s: %d Enter",__func__, __LINE__);
34383
34384
34385 /*-------------------------------------------------------------------------
34386 Sanity check
34387 -------------------------------------------------------------------------*/
34388 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34389 ( NULL == pEventData->pEventData))
34390 {
34391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34392 "%s: Invalid parameters", __func__);
34393 WDI_ASSERT(0);
34394 return WDI_STATUS_E_FAILURE;
34395 }
34396
34397 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34398 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
34399 {
34400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34401 "%s: Callback function Invalid", __func__);
34402 WDI_ASSERT(0);
34403 return WDI_STATUS_E_FAILURE;
34404 }
34405
34406 wdiEXTScanGetCachedResultsRspCb(
34407 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34408
34409 return WDI_STATUS_SUCCESS;
34410}
34411
34412/**
34413 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
34414 is being received over the bus from HAL)
34415
34416 @param pWDICtx: pointer to the WLAN DAL context
34417 pEventData: pointer to the event information structure
34418
34419 @see
34420 @return Result of the function call
34421*/
34422WDI_Status
34423WDI_ProcessEXTScanGetCapabilitiesRsp
34424(
34425 WDI_ControlBlockType* pWDICtx,
34426 WDI_EventInfoType* pEventData
34427)
34428{
34429 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
34430
34431 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34432 "%s: %d ",__func__, __LINE__);
34433
34434
34435 /*-------------------------------------------------------------------------
34436 Sanity check
34437 -------------------------------------------------------------------------*/
34438 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34439 ( NULL == pEventData->pEventData))
34440 {
34441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34442 "%s: Invalid parameters", __func__);
34443 WDI_ASSERT(0);
34444 return WDI_STATUS_E_FAILURE;
34445 }
34446
34447 wdiEXTScanGetCapabilitiesRspCb =
34448 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
34449 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34450 {
34451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34452 "%s: Callback function Invalid", __func__);
34453 WDI_ASSERT(0);
34454 return WDI_STATUS_E_FAILURE;
34455 }
34456
34457 wdiEXTScanGetCapabilitiesRspCb(
34458 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34459
34460 return WDI_STATUS_SUCCESS;
34461}
34462
34463/**
34464 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34465 response is being received over the bus from HAL)
34466
34467 @param pWDICtx: pointer to the WLAN DAL context
34468 pEventData: pointer to the event information structure
34469
34470 @see
34471 @return Result of the function call
34472*/
34473WDI_Status
34474WDI_ProcessEXTScanSetHotlistBSSIDRsp
34475(
34476 WDI_ControlBlockType* pWDICtx,
34477 WDI_EventInfoType* pEventData
34478)
34479{
34480 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34481
34482 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34483 "%s: %d ",__func__, __LINE__);
34484
34485
34486 /*-------------------------------------------------------------------------
34487 Sanity check
34488 -------------------------------------------------------------------------*/
34489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34490 ( NULL == pEventData->pEventData))
34491 {
34492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34493 "%s: Invalid parameters", __func__);
34494 WDI_ASSERT(0);
34495 return WDI_STATUS_E_FAILURE;
34496 }
34497
34498 wdiEXTScanSetBSSIDHotlistRspCb =
34499 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34500 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34501 {
34502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34503 "%s: Callback function Invalid", __func__);
34504 WDI_ASSERT(0);
34505 return WDI_STATUS_E_FAILURE;
34506 }
34507
34508 wdiEXTScanSetBSSIDHotlistRspCb(
34509 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34510
34511 return WDI_STATUS_SUCCESS;
34512}
34513
34514/**
34515 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34516 when a response is being received over the bus from HAL)
34517
34518 @param pWDICtx: pointer to the WLAN DAL context
34519 pEventData: pointer to the event information structure
34520
34521 @see
34522 @return Result of the function call
34523*/
34524WDI_Status
34525WDI_ProcessEXTScanResetHotlistBSSIDRsp
34526(
34527 WDI_ControlBlockType* pWDICtx,
34528 WDI_EventInfoType* pEventData
34529)
34530{
34531 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34532
34533 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34534 "%s: %d ",__func__, __LINE__);
34535
34536
34537 /*-------------------------------------------------------------------------
34538 Sanity check
34539 -------------------------------------------------------------------------*/
34540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34541 ( NULL == pEventData->pEventData))
34542 {
34543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34544 "%s: Invalid parameters", __func__);
34545 WDI_ASSERT(0);
34546 return WDI_STATUS_E_FAILURE;
34547 }
34548
34549 wdiEXTScanResetBSSIDHotlistRspCb =
34550 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34551 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34552 {
34553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34554 "%s: Callback function Invalid", __func__);
34555 WDI_ASSERT(0);
34556 return WDI_STATUS_E_FAILURE;
34557 }
34558
34559 wdiEXTScanResetBSSIDHotlistRspCb(
34560 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34561
34562 return WDI_STATUS_SUCCESS;
34563}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034564
34565/**
34566 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
34567 response is being received over the bus from HAL)
34568
34569 @param pWDICtx: pointer to the WLAN DAL context
34570 pEventData: pointer to the event information structure
34571
34572 @see
34573 @return Result of the function call
34574*/
34575WDI_Status
34576WDI_ProcessEXTScanSetHotlistSSIDRsp
34577(
34578 WDI_ControlBlockType* pWDICtx,
34579 WDI_EventInfoType* pEventData
34580)
34581{
34582 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
34583
34584 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34585 "%s: %d ",__func__, __LINE__);
34586
34587
34588 /*-------------------------------------------------------------------------
34589 Sanity check
34590 -------------------------------------------------------------------------*/
34591 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34592 ( NULL == pEventData->pEventData))
34593 {
34594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34595 "%s: Invalid parameters", __func__);
34596 WDI_ASSERT(0);
34597 return WDI_STATUS_E_FAILURE;
34598 }
34599
34600 wdiEXTScanSetSSIDHotlistRspCb =
34601 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34602 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
34603 {
34604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34605 "%s: Callback function Invalid", __func__);
34606 WDI_ASSERT(0);
34607 return WDI_STATUS_E_FAILURE;
34608 }
34609
34610 wdiEXTScanSetSSIDHotlistRspCb(
34611 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34612
34613 return WDI_STATUS_SUCCESS;
34614}
34615
34616
34617/**
34618 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34619 when a response is being received over the bus from HAL)
34620
34621 @param pWDICtx: pointer to the WLAN DAL context
34622 pEventData: pointer to the event information structure
34623
34624 @see
34625 @return Result of the function call
34626*/
34627WDI_Status
34628WDI_ProcessEXTScanResetHotlistSSIDRsp
34629(
34630 WDI_ControlBlockType* pWDICtx,
34631 WDI_EventInfoType* pEventData
34632)
34633{
34634 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34635
34636 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34637 "%s: %d ",__func__, __LINE__);
34638
34639
34640 /*-------------------------------------------------------------------------
34641 Sanity check
34642 -------------------------------------------------------------------------*/
34643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34644 ( NULL == pEventData->pEventData))
34645 {
34646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34647 "%s: Invalid parameters", __func__);
34648 WDI_ASSERT(0);
34649 return WDI_STATUS_E_FAILURE;
34650 }
34651
34652 wdiEXTScanResetSSIDHotlistRspCb =
34653 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34654 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
34655 {
34656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34657 "%s: Callback function Invalid", __func__);
34658 WDI_ASSERT(0);
34659 return WDI_STATUS_E_FAILURE;
34660 }
34661
34662 wdiEXTScanResetSSIDHotlistRspCb(
34663 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34664
34665 return WDI_STATUS_SUCCESS;
34666}
Dino Mycle41bdc942014-06-10 11:30:24 +053034667#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034668
34669/**
34670 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34671
34672 @param None
34673
34674 @see
34675
34676 @return Status of the request
34677*/
34678WDI_Status
34679WDI_SetSpoofMacAddrReq
34680(
34681 WDI_SpoofMacAddrInfoType* pWdiReq,
34682 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34683 void* pUserData)
34684{
34685 WDI_EventInfoType wdiEventData;
34686
34687 /*-------------------------------------------------------------------------
34688 Sanity Check
34689 ------------------------------------------------------------------------*/
34690 if (eWLAN_PAL_FALSE == gWDIInitialized)
34691 {
34692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34693 "WDI API call before module is initialized - Fail request!");
34694
34695 return WDI_STATUS_E_NOT_ALLOWED;
34696 }
34697
34698 /*-------------------------------------------------------------------------
34699 Fill in Event data and post to the Main FSM
34700 ------------------------------------------------------------------------*/
34701 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34702 wdiEventData.pEventData = pWdiReq;
34703 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34704 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34705 wdiEventData.pUserData = pUserData;
34706
34707 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34708}
34709
34710/**
34711 @brief Process SpoofMacAddr Request
34712
34713 @param pWDICtx: pointer to the WLAN DAL context
34714 pEventData: pointer to the event information structure
34715
34716 @see
34717 @return Result of the function call
34718*/
34719WDI_Status
34720WDI_ProcessSpoofMacAddrReq
34721(
34722 WDI_ControlBlockType* pWDICtx,
34723 WDI_EventInfoType* pEventData
34724)
34725{
34726 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34727 wpt_uint8* pSendBuffer = NULL;
34728 wpt_uint16 usDataOffset = 0;
34729 wpt_uint16 usSendSize = 0;
34730 WDI_Status wdiStatus;
34731 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34732 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34733
34734
34735 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34736 "%s: %d Enter",__func__, __LINE__);
34737
34738 /*-------------------------------------------------------------------------
34739 Sanity check
34740 -------------------------------------------------------------------------*/
34741 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34742 ( NULL == pEventData->pEventData))
34743 {
34744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34745 "%s: Invalid parameters", __func__);
34746 WDI_ASSERT(0);
34747 return WDI_STATUS_E_FAILURE;
34748 }
34749 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34750
34751 /*-----------------------------------------------------------------------
34752 Get message buffer
34753 -----------------------------------------------------------------------*/
34754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34755 WDI_SPOOF_MAC_ADDR_REQ,
34756 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34757 &pSendBuffer, &usDataOffset, &usSendSize))||
34758 (usSendSize < (usDataOffset +
34759 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34760 {
34761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34762 "Unable to get send buffer in Process Spoof Mac Addr Req");
34763 WDI_ASSERT(0);
34764 return WDI_STATUS_E_FAILURE;
34765 }
34766
34767 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34768 wdiSpoofMacAddr->macAddr,
34769 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34770
34771 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34772
34773 wpalMemoryCopy( pSendBuffer+usDataOffset,
34774 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34775 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34776
34777 /*-------------------------------------------------------------------------
34778 Send Suspend Request to HAL
34779 -------------------------------------------------------------------------*/
34780 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34781 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34782
34783 return wdiStatus;
34784}
34785
34786/**
34787 @brief Process Spoof Mac Address Rsp function
34788 (called when a response is being received over the bus from HAL)
34789
34790 @param pWDICtx: pointer to the WLAN DAL context
34791 pEventData: pointer to the event information structure
34792
34793 @see
34794 @return Result of the function call
34795*/
34796WDI_Status
34797WDI_ProcessSpoofMacAddrRsp
34798(
34799 WDI_ControlBlockType* pWDICtx,
34800 WDI_EventInfoType* pEventData
34801)
34802{
34803 tMacSpoofedScanResp halRsp;
34804 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34805 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34806
34807 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34808 "%s: %d Enter",__func__, __LINE__);
34809
34810 /*-------------------------------------------------------------------------
34811 Sanity check
34812 -------------------------------------------------------------------------*/
34813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34814 ( NULL == pEventData->pEventData))
34815 {
34816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34817 "%s: Invalid parameters", __func__);
34818 WDI_ASSERT(0);
34819 return WDI_STATUS_E_FAILURE;
34820 }
34821 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34822
34823 /*-------------------------------------------------------------------------
34824 Extract response and send it to UMAC
34825 -------------------------------------------------------------------------*/
34826 wpalMemoryCopy( &halRsp,
34827 pEventData->pEventData, sizeof(halRsp));
34828
34829 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34830
34831 /*Notify UMAC*/
34832 wdiSpoofMacAddrRspCb(
34833 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34834
34835 return WDI_STATUS_SUCCESS;
34836}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034837
34838/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034839 @brief Process Get Frame Log Rsp function
34840 (called when a response is being received over the bus from HAL)
34841
34842 @param pWDICtx: pointer to the WLAN DAL context
34843 pEventData: pointer to the event information structure
34844
34845 @see
34846 @return Result of the function call
34847*/
34848WDI_Status
34849WDI_ProcessGetFrameLogRsp
34850(
34851 WDI_ControlBlockType* pWDICtx,
34852 WDI_EventInfoType* pEventData
34853)
34854{
34855 tGetFrameLogResp halRsp;
34856 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34857 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34858
34859 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34860 "%s: %d Enter",__func__, __LINE__);
34861
34862 /*-------------------------------------------------------------------------
34863 Sanity check
34864 -------------------------------------------------------------------------*/
34865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34866 ( NULL == pEventData->pEventData))
34867 {
34868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34869 "%s: Invalid parameters", __func__);
34870 WDI_ASSERT(0);
34871 return WDI_STATUS_E_FAILURE;
34872 }
34873
34874 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34875
34876 /*-------------------------------------------------------------------------
34877 Extract response and send it to UMAC
34878 -------------------------------------------------------------------------*/
34879 wpalMemoryCopy( &halRsp,
34880 pEventData->pEventData, sizeof(halRsp));
34881
34882 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34883
34884 /*Notify UMAC*/
34885 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34886
34887 return WDI_STATUS_SUCCESS;
34888}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053034889
34890/**
34891 @brief Process RssiMonitorStartReq Request
34892
34893 @param pWDICtx: pointer to the WLAN DAL context
34894 pEventData: pointer to the event information structure
34895
34896 @see
34897 @return Result of the function call
34898*/
34899WDI_Status
34900WDI_ProcessRssiMonitorStartReq
34901(
34902 WDI_ControlBlockType* pWDICtx,
34903 WDI_EventInfoType* pEventData
34904)
34905{
34906 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
34907 wpt_uint8* pSendBuffer = NULL;
34908 wpt_uint16 usDataOffset = 0;
34909 wpt_uint16 usSendSize = 0;
34910 WDI_Status wdiStatus;
34911 tHalStartRssimonitoringReq halStartRssiMonitorReq;
34912 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
34913
34914
34915 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34916 "%s: %d Enter",__func__, __LINE__);
34917
34918 /*-------------------------------------------------------------------------
34919 Sanity check
34920 ------------------------------------------------------------------------*/
34921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34922 ( NULL == pEventData->pEventData))
34923 {
34924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34925 "%s: Invalid parameters", __func__);
34926 WDI_ASSERT(0);
34927 return WDI_STATUS_E_FAILURE;
34928 }
34929
34930 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34931
34932 /*-----------------------------------------------------------------------
34933 Get message buffer
34934 -----------------------------------------------------------------------*/
34935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34936 WDI_START_RSSI_MONITOR_REQ,
34937 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
34938 &pSendBuffer, &usDataOffset, &usSendSize))||
34939 (usSendSize < (usDataOffset +
34940 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
34941 {
34942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34943 "Unable to get send buffer in GetFrameLog Req");
34944 WDI_ASSERT(0);
34945 return WDI_STATUS_E_FAILURE;
34946 }
34947
34948 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
34949 wdiRssiMonitorStartReq->requestId;
34950
34951 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
34952 wdiRssiMonitorStartReq->minRssi;
34953
34954 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
34955 wdiRssiMonitorStartReq->maxRssi;
34956 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
34957 &(wdiRssiMonitorStartReq->currentBssId),
34958 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
34959
34960 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
34961
34962 wpalMemoryCopy(pSendBuffer+usDataOffset,
34963 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
34964 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
34965
34966 /*-------------------------------------------------------------------------
34967 Send Suspend Request to HAL
34968 ------------------------------------------------------------------------*/
34969 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34970 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
34971
34972 return wdiStatus;
34973}
34974
34975
34976/**
34977 @brief Process FWLoggingInit Request
34978
34979 @param pWDICtx: pointer to the WLAN DAL context
34980 pEventData: pointer to the event information structure
34981
34982 @see
34983 @return Result of the function call
34984*/
34985WDI_Status
34986WDI_ProcessRssiMonitorStopReq
34987(
34988 WDI_ControlBlockType* pWDICtx,
34989 WDI_EventInfoType* pEventData
34990)
34991{
34992 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
34993 wpt_uint8* pSendBuffer = NULL;
34994 wpt_uint16 usDataOffset = 0;
34995 wpt_uint16 usSendSize = 0;
34996 WDI_Status wdiStatus;
34997 tHalStopRssimonitoringReq halStopRssiMonitorReq;
34998 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
34999
35000
35001 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35002 "%s: %d Enter",__func__, __LINE__);
35003
35004 /*-------------------------------------------------------------------------
35005 Sanity check
35006 ------------------------------------------------------------------------*/
35007 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35008 ( NULL == pEventData->pEventData))
35009 {
35010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35011 "%s: Invalid parameters", __func__);
35012 WDI_ASSERT(0);
35013 return WDI_STATUS_E_FAILURE;
35014 }
35015 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
35016
35017 /*-----------------------------------------------------------------------
35018 Get message buffer
35019 -----------------------------------------------------------------------*/
35020 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35021 WDI_STOP_RSSI_MONITOR_REQ,
35022 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
35023 &pSendBuffer, &usDataOffset, &usSendSize))||
35024 (usSendSize < (usDataOffset +
35025 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
35026 {
35027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35028 "Unable to get send buffer in GetFrameLog Req");
35029 WDI_ASSERT(0);
35030 return WDI_STATUS_E_FAILURE;
35031 }
35032
35033 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
35034 wdiRssiMonitorStopReq->requestId;
35035
35036 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
35037 &(wdiRssiMonitorStopReq->currentBssId),
35038 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
35039
35040 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
35041
35042 wpalMemoryCopy(pSendBuffer+usDataOffset,
35043 &halStopRssiMonitorReq.stopRssiMonitoringParams,
35044 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
35045
35046 /*-------------------------------------------------------------------------
35047 Send Suspend Request to HAL
35048 ------------------------------------------------------------------------*/
35049 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35050 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
35051
35052 return wdiStatus;
35053}
35054
35055/**
35056 @brief Process MgmtFrame Logging Init Rsp function
35057 (called when a response is being received over the bus from HAL)
35058
35059 @param pWDICtx: pointer to the WLAN DAL context
35060 pEventData: pointer to the event information structure
35061
35062 @see
35063 @return Result of the function call
35064*/
35065WDI_Status
35066WDI_ProcessRssiMonitorStopRsp
35067(
35068 WDI_ControlBlockType* pWDICtx,
35069 WDI_EventInfoType* pEventData
35070)
35071{
35072 tHalStopRssimonitoringRspParams halRsp;
35073 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
35074 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
35075
35076 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35077 "%s: %d Enter",__func__, __LINE__);
35078
35079 /*-------------------------------------------------------------------------
35080 Sanity check
35081 -------------------------------------------------------------------------*/
35082 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35083 ( NULL == pEventData->pEventData))
35084 {
35085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35086 "%s: Invalid parameters", __func__);
35087 WDI_ASSERT(0);
35088 return WDI_STATUS_E_FAILURE;
35089 }
35090 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35091
35092 /*-------------------------------------------------------------------------
35093 Extract response and send it to UMAC
35094 -------------------------------------------------------------------------*/
35095 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35096
35097 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35098
35099 /*Notify UMAC*/
35100 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
35101
35102 return WDI_STATUS_SUCCESS;
35103}
35104
35105
35106/**
35107 @brief Process MgmtFrame Logging Init Rsp function
35108 (called when a response is being received over the bus from HAL)
35109
35110 @param pWDICtx: pointer to the WLAN DAL context
35111 pEventData: pointer to the event information structure
35112
35113 @see
35114 @return Result of the function call
35115*/
35116WDI_Status
35117WDI_ProcessRssiMonitorStartRsp
35118(
35119 WDI_ControlBlockType* pWDICtx,
35120 WDI_EventInfoType* pEventData
35121)
35122{
35123 tHalStartRssimonitoringRspParams halRsp;
35124 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
35125 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
35126
35127 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35128 "%s: %d Enter",__func__, __LINE__);
35129
35130 /*-------------------------------------------------------------------------
35131 Sanity check
35132 -------------------------------------------------------------------------*/
35133 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35134 ( NULL == pEventData->pEventData))
35135 {
35136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35137 "%s: Invalid parameters", __func__);
35138 WDI_ASSERT(0);
35139 return WDI_STATUS_E_FAILURE;
35140 }
35141 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35142
35143 /*-------------------------------------------------------------------------
35144 Extract response and send it to UMAC
35145 -------------------------------------------------------------------------*/
35146 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35147
35148 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35149
35150 /*Notify UMAC*/
35151 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
35152
35153 return WDI_STATUS_SUCCESS;
35154}
35155
Siddharth Bhal64246172015-02-27 01:04:37 +053035156/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035157 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053035158
35159 @param pWDICtx: pointer to the WLAN DAL context
35160 pEventData: pointer to the event information structure
35161
35162 @see
35163 @return Result of the function call
35164*/
35165WDI_Status
35166WDI_ProcessGetFrameLogReq
35167(
35168 WDI_ControlBlockType* pWDICtx,
35169 WDI_EventInfoType* pEventData
35170)
35171{
35172 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
35173 wpt_uint8* pSendBuffer = NULL;
35174 wpt_uint16 usDataOffset = 0;
35175 wpt_uint16 usSendSize = 0;
35176 WDI_Status wdiStatus;
35177 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035178 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053035179
35180
35181 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35182 "%s: %d Enter",__func__, __LINE__);
35183
35184 /*-------------------------------------------------------------------------
35185 Sanity check
35186 ------------------------------------------------------------------------*/
35187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35188 ( NULL == pEventData->pEventData))
35189 {
35190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35191 "%s: Invalid parameters", __func__);
35192 WDI_ASSERT(0);
35193 return WDI_STATUS_E_FAILURE;
35194 }
35195
35196 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
35197
35198 /*-----------------------------------------------------------------------
35199 Get message buffer
35200 -----------------------------------------------------------------------*/
35201 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35202 WDI_GET_FRAME_LOG_REQ,
35203 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
35204 &pSendBuffer, &usDataOffset, &usSendSize))||
35205 (usSendSize < (usDataOffset +
35206 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
35207 {
35208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35209 "Unable to get send buffer in GetFrameLog Req");
35210 WDI_ASSERT(0);
35211 return WDI_STATUS_E_FAILURE;
35212 }
35213
35214 halGetFrameLogReq.tGetFrameLogReqParams.flags =
35215 wdiGetFrameLogReq->flags;
35216
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035217 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053035218
35219 wpalMemoryCopy( pSendBuffer+usDataOffset,
35220 &halGetFrameLogReq.tGetFrameLogReqParams,
35221 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
35222
35223 /*-------------------------------------------------------------------------
35224 Send Suspend Request to HAL
35225 ------------------------------------------------------------------------*/
35226 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35227 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
35228
35229 return wdiStatus;
35230}
35231/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035232 @brief Process MgmtFrame Logging Init Rsp function
35233 (called when a response is being received over the bus from HAL)
35234
35235 @param pWDICtx: pointer to the WLAN DAL context
35236 pEventData: pointer to the event information structure
35237
35238 @see
35239 @return Result of the function call
35240*/
35241WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035242WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035243(
35244 WDI_ControlBlockType* pWDICtx,
35245 WDI_EventInfoType* pEventData
35246)
35247{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035248 tFWLoggingInitResp halRsp;
35249 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
35250 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035251
35252 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35253 "%s: %d Enter",__func__, __LINE__);
35254
35255 /*-------------------------------------------------------------------------
35256 Sanity check
35257 -------------------------------------------------------------------------*/
35258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35259 ( NULL == pEventData->pEventData))
35260 {
35261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35262 "%s: Invalid parameters", __func__);
35263 WDI_ASSERT(0);
35264 return WDI_STATUS_E_FAILURE;
35265 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035266 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035267
35268 /*-------------------------------------------------------------------------
35269 Extract response and send it to UMAC
35270 -------------------------------------------------------------------------*/
35271 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35272
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035273 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053035274 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035275
35276 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035277 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035278
35279 return WDI_STATUS_SUCCESS;
35280}
35281
c_manjeecfd1efb2015-09-25 19:32:34 +053035282/**
35283 @brief Process Fwr Mem Dump Rsp function
35284 (called when a response is being received over the bus from HAL)
35285
35286 @param pWDICtx: pointer to the WLAN DAL context
35287 pEventData: pointer to the event information structure
35288
35289 @see
35290 @return Result of the function call
35291*/
35292WDI_Status
35293 WDI_ProcessFwrMemDumpRsp
35294
35295(
35296 WDI_ControlBlockType* pWDICtx,
35297 WDI_EventInfoType* pEventData
35298)
35299{
35300 tHalFwMemoryDumpRespMsg halRsp;
35301 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35302 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
35303
35304 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35305 "%s: %d Enter",__func__, __LINE__);
35306
35307 /*-------------------------------------------------------------------------
35308 Sanity check
35309 -------------------------------------------------------------------------*/
35310 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35311 ( NULL == pEventData->pEventData))
35312 {
35313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35314 "%s: Invalid parameters", __func__);
35315 WDI_ASSERT(0);
35316 return WDI_STATUS_E_FAILURE;
35317 }
35318 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
35319
35320 /*-------------------------------------------------------------------------
35321 Extract response and send it to UMAC
35322 -------------------------------------------------------------------------*/
c_manjee107ae7a2015-11-13 22:28:50 +053035323 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp.tFwMemoryDumpResp));
c_manjeecfd1efb2015-09-25 19:32:34 +053035324
35325 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
35326
35327 /*Notify UMAC*/
35328 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
35329
35330 return WDI_STATUS_SUCCESS;
35331}
35332
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035333WDI_Status
35334WDI_ProcessFWLoggingDXEdoneInd
35335(
35336 WDI_ControlBlockType* pWDICtx,
35337 WDI_EventInfoType* pEventData
35338)
35339{
35340 wpt_uint8* pSendBuffer = NULL;
35341 wpt_uint16 usDataOffset = 0;
35342 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035343 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053035344 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035345 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035346 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035347
35348
35349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35350
35351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35352 "%s", __func__);
35353
35354 /*-------------------------------------------------------------------------
35355 Sanity check
35356 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035357 if (NULL == pEventData ||
35358 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035359 {
35360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35361 "%s: Invalid parameters", __func__);
35362 WDI_ASSERT(0);
35363 return WDI_STATUS_E_FAILURE;
35364 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035365 pLogType = (wpt_uint32 *)pEventData->pEventData;
35366
Mihir Shete5affadc2015-05-29 20:54:57 +053035367 pLoggingSession = (WDI_DS_LoggingSessionType *)
35368 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
35369 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035370 /*-----------------------------------------------------------------------
35371 Get message buffer
35372 -----------------------------------------------------------------------*/
35373
35374 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35375 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053035376 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035377 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053035378 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035379 {
35380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35381 "Unable to get send buffer in RTS CTS ind %p ",
35382 pEventData);
35383 WDI_ASSERT(0);
35384 return WDI_STATUS_E_FAILURE;
35385 }
35386 FWLoggingDxeDoneIndParams =
35387 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
35388
35389 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053035390 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035391 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053035392
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053035393 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035394 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053035395
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035396 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053035397 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035398 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
35399
35400 pWDICtx->pReqStatusUserData = NULL;
35401 pWDICtx->pfncRspCB = NULL;
35402 /*-------------------------------------------------------------------------
35403 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
35404 -------------------------------------------------------------------------*/
35405 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35406 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35407}
35408
Sachin Ahuja715aafc2015-07-21 23:35:10 +053035409
35410/**
35411 @brief Process Fatal Event Logs Rsp function
35412 (called when a response is being received over the bus from HAL)
35413
35414 @param pWDICtx: pointer to the WLAN DAL context
35415 pEventData: pointer to the event information structure
35416
35417 @see
35418 @return Result of the function call
35419*/
35420WDI_Status
35421WDI_ProcessFatalEventLogsRsp
35422(
35423 WDI_ControlBlockType* pWDICtx,
35424 WDI_EventInfoType* pEventData
35425)
35426{
35427 tHalFatalEventLoggingRspParams halRsp;
35428 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35429 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
35430
35431 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35432 "%s: %d Enter",__func__, __LINE__);
35433
35434 /*-------------------------------------------------------------------------
35435 Sanity check
35436 -------------------------------------------------------------------------*/
35437 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35438 ( NULL == pEventData->pEventData))
35439 {
35440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35441 "%s: Invalid parameters", __func__);
35442 WDI_ASSERT(0);
35443 return WDI_STATUS_E_FAILURE;
35444 }
35445 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
35446
35447 /*-------------------------------------------------------------------------
35448 Extract response and send it to UMAC
35449 -------------------------------------------------------------------------*/
35450 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35451
35452 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
35453
35454 /*Notify UMAC*/
35455 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
35456 pWDICtx->pRspCBUserData);
35457
35458 return WDI_STATUS_SUCCESS;
35459}
35460
35461/**
35462 @brief Process FatalEventLogs Request
35463
35464 @param pWDICtx: pointer to the WLAN DAL context
35465 pEventData: pointer to the event information structure
35466
35467 @see
35468 @return Result of the function call
35469*/
35470
35471WDI_Status
35472WDI_ProcessFatalEventLogsReq
35473
35474(
35475 WDI_ControlBlockType* pWDICtx,
35476 WDI_EventInfoType* pEventData
35477)
35478{
35479 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
35480 wpt_uint8* pSendBuffer = NULL;
35481 wpt_uint16 usDataOffset = 0;
35482 wpt_uint16 usSendSize = 0;
35483 WDI_Status wdiStatus;
35484 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
35485 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35486
35487
35488 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35489 "%s: %d Enter",__func__, __LINE__);
35490
35491 /*-------------------------------------------------------------------------
35492 Sanity check
35493 ------------------------------------------------------------------------*/
35494 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35495 ( NULL == pEventData->pEventData))
35496 {
35497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35498 "%s: Invalid parameters", __func__);
35499 WDI_ASSERT(0);
35500 return WDI_STATUS_E_FAILURE;
35501 }
35502 wdiFatalEventLogsReq =
35503 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
35504
35505 /*-----------------------------------------------------------------------
35506 Get message buffer
35507 -----------------------------------------------------------------------*/
35508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35509 WDI_FATAL_EVENT_LOGGING_REQ,
35510 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
35511 &pSendBuffer, &usDataOffset, &usSendSize))||
35512 (usSendSize < (usDataOffset +
35513 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
35514 {
35515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35516 "Unable to get send buffer in Fatal Event Req");
35517 WDI_ASSERT(0);
35518 return WDI_STATUS_E_FAILURE;
35519 }
35520 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
35521 wdiFatalEventLogsReq->reason_code;
35522
35523 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
35524
35525 wpalMemoryCopy( pSendBuffer+usDataOffset,
35526 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
35527 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
35528
35529 /*-------------------------------------------------------------------------
35530 Send Mgmt Logging Init Request to HAL
35531 ------------------------------------------------------------------------*/
35532 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35533 wdiFatalEventLogsRspCb, pEventData->pUserData,
35534 WDI_FATAL_EVENT_LOGGING_RSP);
35535
35536 return wdiStatus;
35537
35538
35539}
35540
35541
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035542/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035543 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035544
35545 @param pWDICtx: pointer to the WLAN DAL context
35546 pEventData: pointer to the event information structure
35547
35548 @see
35549 @return Result of the function call
35550*/
35551WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035552WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035553(
35554 WDI_ControlBlockType* pWDICtx,
35555 WDI_EventInfoType* pEventData
35556)
35557{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035558 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035559 wpt_uint8* pSendBuffer = NULL;
35560 wpt_uint16 usDataOffset = 0;
35561 wpt_uint16 usSendSize = 0;
35562 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035563 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
35564 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035565
35566
35567 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35568 "%s: %d Enter",__func__, __LINE__);
35569
35570 /*-------------------------------------------------------------------------
35571 Sanity check
35572 ------------------------------------------------------------------------*/
35573 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35574 ( NULL == pEventData->pEventData))
35575 {
35576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35577 "%s: Invalid parameters", __func__);
35578 WDI_ASSERT(0);
35579 return WDI_STATUS_E_FAILURE;
35580 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035581 wdiFWLoggingInitReq =
35582 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035583
35584 /*-----------------------------------------------------------------------
35585 Get message buffer
35586 -----------------------------------------------------------------------*/
35587 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035588 WDI_FW_LOGGING_INIT_REQ,
35589 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035590 &pSendBuffer, &usDataOffset, &usSendSize))||
35591 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035592 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035593 {
35594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35595 "Unable to get send buffer in Process Mgmt Logging Init Req");
35596 WDI_ASSERT(0);
35597 return WDI_STATUS_E_FAILURE;
35598 }
35599
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035600 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
35601 wdiFWLoggingInitReq->enableFlag;
35602 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
35603 wdiFWLoggingInitReq->frameSize;
35604 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
35605 wdiFWLoggingInitReq->frameType;
35606 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
35607 wdiFWLoggingInitReq->bufferMode;
35608 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
35609 wdiFWLoggingInitReq->continuousFrameLogging;
35610 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
35611 wdiFWLoggingInitReq->minLogBufferSize;
35612 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
35613 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053035614 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
35615 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
35616 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
35617 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035618
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035619 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035620
35621 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035622 &halFWLoggingInitReq.tFWLoggingInitReqParams,
35623 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035624
35625 /*-------------------------------------------------------------------------
35626 Send Mgmt Logging Init Request to HAL
35627 ------------------------------------------------------------------------*/
35628 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035629 wdiFWLoggingInitRspCb, pEventData->pUserData,
35630 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035631
35632 return wdiStatus;
35633}
35634
35635/**
c_manjeecfd1efb2015-09-25 19:32:34 +053035636 @brief Process FwrMemDumpReq Request
35637
35638 @param pWDICtx: pointer to the WLAN DAL context
35639 pEventData: pointer to the event information structure
35640
35641 @see
35642 @return Result of the function call
35643*/
35644WDI_Status
35645 WDI_ProcessFwrMemDumpReq
35646
35647(
35648 WDI_ControlBlockType* pWDICtx,
35649 WDI_EventInfoType* pEventData
35650)
35651{
35652 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
35653 wpt_uint8* pSendBuffer = NULL;
35654 wpt_uint16 usDataOffset = 0;
35655 wpt_uint16 usSendSize = 0;
35656 WDI_Status wdiStatus;
35657 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
35658 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35659
35660 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35661 "%s: %d Enter",__func__, __LINE__);
35662
35663 /*-------------------------------------------------------------------------
35664 Sanity check
35665 ------------------------------------------------------------------------*/
35666 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35667 ( NULL == pEventData->pEventData))
35668 {
35669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35670 "%s: Invalid parameters", __func__);
35671 WDI_ASSERT(0);
35672 return WDI_STATUS_E_FAILURE;
35673 }
35674
35675 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
35676
35677 /*-----------------------------------------------------------------------
35678 Get message buffer
35679 -----------------------------------------------------------------------*/
35680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35681 WDI_FWR_MEM_DUMP_REQ,
35682 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
35683 &pSendBuffer, &usDataOffset, &usSendSize))||
35684 (usSendSize < (usDataOffset +
35685 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
35686 {
35687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35688 "Unable to get send buffer in Process Fwr Mem Dump Req");
35689 WDI_ASSERT(0);
35690 return WDI_STATUS_E_FAILURE;
35691 }
35692
35693 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
35694 wpalMemoryCopy( pSendBuffer+usDataOffset,
35695 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
35696 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
35697
35698 /*-------------------------------------------------------------------------
35699 Send Fwr Mem Dump Request to HAL
35700 ------------------------------------------------------------------------*/
35701 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35702 wdiFwrMemDumpRspCb, pEventData->pUserData,
35703 WDI_FWR_MEM_DUMP_RSP);
35704 return wdiStatus;
35705}
35706
35707/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053035708 @brief WDI_EncryptMsgReq
35709
35710 @param pwdiEncryptMsgParams: Req parameter for the FW
35711 wdiEncryptMsgCbRsp: callback for passing back the response
35712 of the Req operation received from the device
35713 pUserData: user data will be passed back with the callback
35714
35715 @return SUCCESS or FAIL
35716*/
35717WDI_Status
35718WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
35719 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
35720 void* pUserData)
35721{
35722 WDI_EventInfoType wdiEventData;
35723
35724 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35725 "%s: %d Enter" ,__func__, __LINE__);
35726 /*------------------------------------------------------------------------
35727 Sanity Check
35728 ------------------------------------------------------------------------*/
35729 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35730 {
35731 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35732 "WDI API call before module is initialized - Fail request");
35733
35734 return WDI_STATUS_E_NOT_ALLOWED;
35735 }
35736
35737 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
35738 wdiEventData.pEventData = pwdiEncryptMsgParams;
35739 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
35740 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
35741 wdiEventData.pUserData = pUserData;
35742
35743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35744}
35745
35746/*
35747 * FUNCTION: WDI_ProcessEncryptMsgReq
35748 * Request to WDI to encrypt the given message.
35749 *
35750 * @param pWDICtx: pointer to the WLAN DAL context
35751 * pEventData: pointer to the event information structure
35752 *
35753 * @return Result of the function call
35754 */
35755
35756WDI_Status
35757WDI_ProcessEncryptMsgReq
35758(
35759 WDI_ControlBlockType* pWDICtx,
35760 WDI_EventInfoType* pEventData
35761)
35762{
35763 wpt_uint8* pSendBuffer = NULL;
35764 wpt_uint16 usDataOffset = 0;
35765 wpt_uint16 usSendSize = 0;
35766 WDI_EncryptMsgRspCb* wdiEncMsgCb;
35767 tSetEncryptedDataParams *pHalEncryptDataReq;
35768 wpt_pkt80211 *pkt = NULL;
35769
35770 /*-------------------------------------------------------------------------
35771 Sanity check
35772 -------------------------------------------------------------------------*/
35773 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
35774 ( NULL == pEventData->pCBfnc ) )
35775 {
35776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35777 "%s: Invalid parameters", __func__);
35778 WDI_ASSERT(0);
35779 return WDI_STATUS_E_FAILURE;
35780 }
35781
35782 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
35783
35784 /*-----------------------------------------------------------------------
35785 Get message buffer
35786 -----------------------------------------------------------------------*/
35787 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35788 pWDICtx, WDI_ENCRYPT_MSG_REQ,
35789 sizeof(tSetEncryptedDataReqMsg),
35790 &pSendBuffer, &usDataOffset, &usSendSize)) ||
35791 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
35792 {
35793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35794 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
35795 pEventData);
35796 WDI_ASSERT(0);
35797 return WDI_STATUS_E_FAILURE;
35798 }
35799
35800 pWDICtx->wdiReqStatusCB = NULL;
35801 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35802 pkt = (wpt_pkt80211 *)pEventData->pEventData;
35803
35804 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
35805 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
35806
35807 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
35808
35809 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
35810 pkt->encParams.keyParams.key[0].keyId;
35811
35812 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
35813 &pkt->encParams.keyParams.key[0].key[0], 16);
35814
35815 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
35816
35817 pHalEncryptDataReq->data.length = pkt->data.length;
35818 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
35819
35820 /*-------------------------------------------------------------------------
35821 Send Get STA Request to HAL
35822 -------------------------------------------------------------------------*/
35823 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
35824 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
35825}
35826
35827/*
35828 * FUNCTION: WDI_ProcessEncryptMsgRsp
35829 * Receives the encrypted message from the firmware
35830 * @param pWDICtx: pointer to the WLAN DAL context
35831 * pEventData: pointer to the event information structure
35832 *
35833 * @return Result of the function call
35834 */
35835WDI_Status
35836WDI_ProcessEncryptMsgRsp
35837(
35838 WDI_ControlBlockType* pWDICtx,
35839 WDI_EventInfoType* pEventData
35840)
35841{
35842 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
35843 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
35844
35845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35846 "In %s",__func__);
35847
35848 /*-------------------------------------------------------------------------
35849 Sanity check
35850 -------------------------------------------------------------------------*/
35851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35852 ( NULL == pEventData->pEventData))
35853 {
35854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35855 "%s: Invalid parameters", __func__);
35856 WDI_ASSERT(0);
35857 return WDI_STATUS_E_FAILURE;
35858 }
35859
35860 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35861
35862 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35863
35864 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35865 pEventData->pEventData,
35866 pWDICtx->pRspCBUserData);
35867 return WDI_STATUS_SUCCESS;
35868}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035869
35870WDI_Status
35871WDI_NanRequest
35872(
35873 WDI_NanRequestType *pwdiNanRequest,
35874 void *usrData
35875)
35876{
35877 WDI_EventInfoType wdiEventData;
35878
35879 /*------------------------------------------------------------------------
35880 Sanity Check
35881 ------------------------------------------------------------------------*/
35882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35883 {
35884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35885 "WDI API call before module is initialized - Fail request");
35886
35887 return WDI_STATUS_E_NOT_ALLOWED;
35888 }
35889
35890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35891 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35892 pwdiNanRequest->request_data_len);
35893
35894 /*------------------------------------------------------------------------
35895 Fill in Event data and post to the Main FSM
35896 ------------------------------------------------------------------------*/
35897 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35898 wdiEventData.pEventData = pwdiNanRequest;
35899 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35900 + pwdiNanRequest->request_data_len;
35901 wdiEventData.pUserData = usrData;
35902 wdiEventData.pCBfnc = NULL;
35903
35904
35905 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35906}
35907
35908WDI_Status
35909WDI_ProcessNanRequest
35910(
35911 WDI_ControlBlockType* pWDICtx,
35912 WDI_EventInfoType* pEventData
35913)
35914{
35915 WDI_NanRequestType *pwdiNanRequest = NULL;
35916 wpt_uint8* pSendBuffer = NULL;
35917 wpt_uint16 usDataOffset = 0;
35918 wpt_uint16 usSendSize = 0;
35919
35920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35921 "WDI_ProcessNanRequest");
35922
35923 /*-------------------------------------------------------------------------
35924 Sanity check
35925 -------------------------------------------------------------------------*/
35926 if (( NULL == pEventData ) ||
35927 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35928 {
35929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35930 "%s: Invalid parameters", __FUNCTION__);
35931 WDI_ASSERT(0);
35932 return WDI_STATUS_E_FAILURE;
35933 }
35934
35935 /*-----------------------------------------------------------------------
35936 Get message buffer
35937 -----------------------------------------------------------------------*/
35938 if (( WDI_STATUS_SUCCESS
35939 != WDI_GetMessageBuffer( pWDICtx,
35940 WDI_NAN_REQUEST,
35941 pwdiNanRequest->request_data_len,
35942 &pSendBuffer,
35943 &usDataOffset,
35944 &usSendSize))||
35945 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35946 {
35947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35948 "Unable to get send buffer in NAN request %p %p",
35949 pEventData, pwdiNanRequest);
35950 WDI_ASSERT(0);
35951 return WDI_STATUS_E_FAILURE;
35952 }
35953
35954 wpalMemoryCopy( pSendBuffer+usDataOffset,
35955 pwdiNanRequest->request_data,
35956 pwdiNanRequest->request_data_len);
35957
35958 pWDICtx->pReqStatusUserData = NULL;
35959 pWDICtx->pfncRspCB = NULL;
35960 vos_mem_free( pEventData->pUserData);
35961
35962 /*-------------------------------------------------------------------------
35963 Send NAN Request to HAL
35964 -------------------------------------------------------------------------*/
35965 return WDI_SendMsg( pWDICtx,
35966 pSendBuffer,
35967 usSendSize,
35968 NULL,
35969 NULL,
35970 WDI_NAN_RESPONSE);
35971}
35972
35973/**
35974 @brief Process NAN Response function (called when a
35975 response is being received over the bus from HAL)
35976
35977 @param pWDICtx: pointer to the WLAN DAL context
35978 pEventData: pointer to the event information structure
35979
35980 @see
35981 @return Result of the function call
35982*/
35983WDI_Status
35984WDI_ProcessNanResponse
35985(
35986 WDI_ControlBlockType* pWDICtx,
35987 WDI_EventInfoType* pEventData
35988)
35989{
35990 WDI_Status wdiStatus;
35991 eHalStatus halStatus;
35992
35993 /*-------------------------------------------------------------------------
35994 Sanity check
35995 -------------------------------------------------------------------------*/
35996 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35997 ( NULL == pEventData->pEventData))
35998 {
35999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36000 "%s: Invalid parameters", __func__);
36001 WDI_ASSERT(0);
36002 return WDI_STATUS_E_FAILURE;
36003 }
36004
36005 halStatus = *((eHalStatus*)pEventData->pEventData);
36006 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
36007
36008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36009 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
36010
36011 return WDI_STATUS_SUCCESS;
36012}/*WDI_ProcessNanResponse*/
36013
36014
36015/**
36016 @brief Process NAN Event function (called when
36017 an indication is being received over the
36018 bus from HAL)
36019
36020 @param pWDICtx: pointer to the WLAN DAL context
36021 pEventData: pointer to the event information structure
36022
36023 @see
36024 @return Result of the function call
36025*/
36026WDI_Status
36027WDI_ProcessNanEvent
36028(
36029 WDI_ControlBlockType* pWDICtx,
36030 WDI_EventInfoType* pEventData
36031)
36032{
36033 WDI_LowLevelIndType wdiInd;
36034
36035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36036
36037 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36038 ( NULL == pEventData->pEventData ))
36039 {
36040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36041 "%s: Invalid parameters", __func__);
36042 WDI_ASSERT( 0 );
36043 return WDI_STATUS_E_FAILURE;
36044 }
36045
36046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36047 "%s: Received NAN event", __func__);
36048 /*-------------------------------------------------------------------------
36049 Extract indication and send it to UMAC
36050 -------------------------------------------------------------------------*/
36051 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
36052 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
36053 pEventData->uEventDataSize;
36054 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
36055 pEventData->pEventData;
36056
36057 /*Notify UMAC*/
36058 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36059
36060 return WDI_STATUS_SUCCESS;
36061}/*WDI_ProcessNanEvent*/
36062
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036063
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036064WDI_Status
36065WDI_Process_RssiBreachedInd
36066(
36067 WDI_ControlBlockType* pWDICtx,
36068 WDI_EventInfoType* pEventData
36069)
36070{
36071 WDI_LowLevelIndType wdiInd;
36072 tHalRssiMonitorIndParams halRssiBreachedInd;
36073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36074
36075 /*-------------------------------------------------------------------------
36076 Sanity check
36077 -------------------------------------------------------------------------*/
36078 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36079 ( NULL == pEventData->pEventData))
36080 {
36081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36082 "%s: Invalid parameters", __func__);
36083 WDI_ASSERT(0);
36084 return WDI_STATUS_E_FAILURE;
36085 }
36086
36087 /*-------------------------------------------------------------------------
36088 Extract indication and send it to UMAC
36089 -------------------------------------------------------------------------*/
36090 wpalMemoryCopy( &halRssiBreachedInd,
36091 pEventData->pEventData,
36092 sizeof(halRssiBreachedInd));
36093
36094
36095 /*Fill in the indication parameters*/
36096 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
36097 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiRssiBreachedInd,
36098 (void *)&halRssiBreachedInd,
36099 sizeof(WDI_RssiBreachedIndType));
36100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36101 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
36102 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
36103 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
36104 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
36105 /*Notify UMAC*/
36106 if (pWDICtx->wdiLowLevelIndCB)
36107 {
36108 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36109 }
36110
36111 return WDI_STATUS_SUCCESS;
36112
36113}
36114
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036115
36116WDI_Status
36117WDI_Process_LostLinkParamInd
36118(
36119 WDI_ControlBlockType* pWDICtx,
36120 WDI_EventInfoType* pEventData
36121)
36122{
36123 WDI_LowLevelIndType wdiInd;
36124 tHalLostLinkParametersIndParams halLostLinkParamInd;
36125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36126
36127 /*-------------------------------------------------------------------------
36128 Sanity check
36129 -------------------------------------------------------------------------*/
36130 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36131 ( NULL == pEventData->pEventData))
36132 {
36133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36134 "%s: Invalid parameters", __func__);
36135 WDI_ASSERT(0);
36136 return WDI_STATUS_E_FAILURE;
36137 }
36138
36139 /*-------------------------------------------------------------------------
36140 Extract indication and send it to UMAC
36141 -------------------------------------------------------------------------*/
36142 wpalMemoryCopy( (void *)&halLostLinkParamInd,
36143 pEventData->pEventData,
36144 sizeof(tHalLostLinkParametersIndParams));
36145
36146
36147 /*Fill in the indication parameters*/
36148 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
36149 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
36150 (void *)&halLostLinkParamInd,
36151 sizeof(WDI_LostLinkParamsIndType));
36152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36153 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
36154 "linkFlTx : %d,lastDataRate : %d", __func__,
36155 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
36156 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
36157 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
36158 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
36159 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
36160 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
36161 /*Notify UMAC*/
36162 if (pWDICtx->wdiLowLevelIndCB)
36163 {
36164 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36165 }
36166
36167 return WDI_STATUS_SUCCESS;
36168
36169}
36170
Abhishek Singh41988ba2015-05-25 19:42:29 +053036171WDI_Status
36172WDI_ProcessSetRtsCtsHtvhtInd
36173(
36174 WDI_ControlBlockType* pWDICtx,
36175 WDI_EventInfoType* pEventData
36176)
36177{
36178 wpt_uint8* pSendBuffer = NULL;
36179 wpt_uint16 usDataOffset = 0;
36180 wpt_uint16 usSendSize = 0;
36181 wpt_uint32 *rtsCtsVal;
36182 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
36183 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36184
36185
36186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36187
36188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36189 "%s", __func__);
36190
36191 /*-------------------------------------------------------------------------
36192 Sanity check
36193 -------------------------------------------------------------------------*/
36194 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36195 {
36196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36197 "%s: Invalid parameters", __func__);
36198 WDI_ASSERT(0);
36199 return WDI_STATUS_E_FAILURE;
36200 }
36201 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
36202 /*-----------------------------------------------------------------------
36203 Get message buffer
36204 -----------------------------------------------------------------------*/
36205
36206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36207 WDI_SET_RTS_CTS_HTVHT_IND,
36208 sizeof(tHalRtsCtsHtvhtIndParams),
36209 &pSendBuffer, &usDataOffset, &usSendSize))||
36210 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
36211 {
36212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36213 "Unable to get send buffer in RTS CTS ind %p ",
36214 pEventData);
36215 WDI_ASSERT(0);
36216 return WDI_STATUS_E_FAILURE;
36217 }
36218 rtsCtsHtvhtIndParams =
36219 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
36220 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
36221
36222 pWDICtx->pReqStatusUserData = NULL;
36223 pWDICtx->pfncRspCB = NULL;
36224 /*-------------------------------------------------------------------------
36225 Send SET_RTS_CTS_HTVHT Indication to HAL
36226 -------------------------------------------------------------------------*/
36227 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36228 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36229}
36230
36231WDI_Status
36232WDI_SetRtsCtsHTVhtInd
36233(
36234 wpt_uint32 rtsCtsVal
36235)
36236{
36237 WDI_EventInfoType wdiEventData;
36238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36239
36240 /*------------------------------------------------------------------------
36241 Sanity Check
36242 ------------------------------------------------------------------------*/
36243 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36244 {
36245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36246 "WDI API call before module is initialized - Fail request");
36247 return WDI_STATUS_E_NOT_ALLOWED;
36248 }
36249
36250 /*------------------------------------------------------------------------
36251 Fill in Event data and post to the Main FSM
36252 ------------------------------------------------------------------------*/
36253 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
36254 wdiEventData.pEventData = (void *) &rtsCtsVal;
36255 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36256 wdiEventData.pCBfnc = NULL;
36257 wdiEventData.pUserData = NULL;
36258
36259 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36260
36261}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053036262
36263WDI_Status
36264WDI_ProcessEnableDisableCAEventInd
36265(
36266 WDI_ControlBlockType* pWDICtx,
36267 WDI_EventInfoType* pEventData
36268)
36269{
36270 wpt_uint8* pSendBuffer = NULL;
36271 wpt_uint16 usDataOffset = 0;
36272 wpt_uint16 usSendSize = 0;
36273 wpt_uint32 *val;
36274 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
36275 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36276
36277
36278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36279
36280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36281 "%s", __func__);
36282
36283 /*-------------------------------------------------------------------------
36284 Sanity check
36285 -------------------------------------------------------------------------*/
36286 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36287 {
36288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36289 "%s: Invalid parameters", __func__);
36290 WDI_ASSERT(0);
36291 return WDI_STATUS_E_FAILURE;
36292 }
36293 val = (wpt_uint32*)pEventData->pEventData;
36294 /*-----------------------------------------------------------------------
36295 Get message buffer
36296 -----------------------------------------------------------------------*/
36297
36298 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36299 WDI_SEND_FREQ_RANGE_CONTROL_IND,
36300 sizeof(tHalAvoidFreqRangeCtrlParam),
36301 &pSendBuffer, &usDataOffset, &usSendSize))||
36302 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
36303 {
36304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36305 "Unable to get send buffer in Channel Avoidance Ind %p ",
36306 pEventData);
36307 WDI_ASSERT(0);
36308 return WDI_STATUS_E_FAILURE;
36309 }
36310 avoidFreqRangeCtrlParam =
36311 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
36312 avoidFreqRangeCtrlParam->status = *val;
36313
36314 pWDICtx->pReqStatusUserData = NULL;
36315 pWDICtx->pfncRspCB = NULL;
36316 /*-------------------------------------------------------------------------
36317 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
36318 -------------------------------------------------------------------------*/
36319 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36320 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36321}
36322
36323WDI_Status
36324WDI_EnableDisableCAEventInd
36325(
36326 wpt_uint32 val
36327)
36328{
36329 WDI_EventInfoType wdiEventData;
36330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36331
36332 /*------------------------------------------------------------------------
36333 Sanity Check
36334 ------------------------------------------------------------------------*/
36335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36336 {
36337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36338 "WDI API call before module is initialized - Fail request");
36339 return WDI_STATUS_E_NOT_ALLOWED;
36340 }
36341
36342 /*------------------------------------------------------------------------
36343 Fill in Event data and post to the Main FSM
36344 ------------------------------------------------------------------------*/
36345 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
36346 wdiEventData.pEventData = (void *) &val;
36347 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36348 wdiEventData.pCBfnc = NULL;
36349 wdiEventData.pUserData = NULL;
36350
36351 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36352
36353} /* WDI_EnableDisableCAEventInd */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053036354
36355/**
36356 @brief WDI_WifiConfigSetReq
36357 This API is called to set WifiConfig params request in FW
36358
36359 @param pwdiWifiConfigSetReqParams : pointer to set WifiCofig request params
36360 wdiWifiConfigSetRspCb : WifiConfig stats resp callback
36361 usrData : Client context
36362 @see
36363 @return SUCCESS or FAIL
36364*/
36365WDI_Status
36366WDI_WifiConfigSetReq(WDI_WifiConfigSetReqType* pwdiWifConfigSetReqParams,
36367 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb,
36368 void* pUserData)
36369{
36370 WDI_EventInfoType wdiEventData;
36371
36372 /*------------------------------------------------------------------------
36373 Sanity Check
36374 ------------------------------------------------------------------------*/
36375 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36376 {
36377 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36378 "WDI API call before module is initialized - Fail request");
36379
36380 return WDI_STATUS_E_NOT_ALLOWED;
36381 }
36382
36383 wdiEventData.wdiRequest = WDI_WIFI_CONFIG_SET_REQ;
36384 wdiEventData.pEventData = pwdiWifConfigSetReqParams;
36385 wdiEventData.uEventDataSize = sizeof(*pwdiWifConfigSetReqParams);
36386 wdiEventData.pCBfnc = wdiWifiConfigSetRspCb;
36387 wdiEventData.pUserData = pUserData;
36388
36389 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36390}
36391
36392/**
36393 @brief WDI_ProcessWifiConfigReq -
36394 Set WifiConfig request to FW
36395
36396 @param pWDICtx : wdi context
36397 pEventData : indication data
36398
36399 @see
36400 @return none
36401*/
36402 WDI_Status
36403 WDI_ProcessWifiConfigReq
36404 (
36405 WDI_ControlBlockType* pWDICtx,
36406 WDI_EventInfoType* pEventData
36407 )
36408 {
36409 WDI_WifiConfigSetReqType* pwdiWifiConfigSetReqParams;
36410 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36411 wpt_uint8* pSendBuffer = NULL;
36412 wpt_uint16 usSendSize = 0;
36413 wpt_uint16 usDataOffset = 0;
36414 tSetWifiConfigParamsReq halWifiConfigSetParams;
36415
36416 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
36417 ( NULL == pEventData->pCBfnc ))
36418 {
36419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36420 "%s: Invalid parameters", __func__);
36421 WDI_ASSERT(0);
36422 return WDI_STATUS_E_FAILURE;
36423 }
36424 pwdiWifiConfigSetReqParams = (WDI_WifiConfigSetReqType*)pEventData->pEventData;
36425 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pEventData->pCBfnc;
36426
36427 /*-----------------------------------------------------------------------
36428 Get message buffer
36429 ! TO DO : proper conversion into the HAL Message Request Format
36430 -----------------------------------------------------------------------*/
36431 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36432 pWDICtx,
36433 WDI_WIFI_CONFIG_SET_REQ,
36434 sizeof(halWifiConfigSetParams.wifiConfigParams),
36435 &pSendBuffer, &usDataOffset,
36436 &usSendSize))||
36437 ( usSendSize < (usDataOffset + sizeof(halWifiConfigSetParams.wifiConfigParams) )))
36438 {
36439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36440 "Unable to get send buffer in %s %p %p %p", __func__,
36441 pEventData, pwdiWifiConfigSetReqParams, wdiWifiConfigSetRspCb);
36442 WDI_ASSERT(0);
36443 return WDI_STATUS_E_FAILURE;
36444 }
36445
36446 halWifiConfigSetParams.wifiConfigParams.paramType = pwdiWifiConfigSetReqParams->paramType;
36447 halWifiConfigSetParams.wifiConfigParams.paramValue =
36448 pwdiWifiConfigSetReqParams->paramValue;
36449 vos_mem_copy(halWifiConfigSetParams.wifiConfigParams.bssid, &(pwdiWifiConfigSetReqParams->bssId),
36450 sizeof(tSirMacAddr));
36451
36452 wpalMemoryCopy(pSendBuffer+usDataOffset,
36453 &halWifiConfigSetParams.wifiConfigParams,
36454 sizeof(halWifiConfigSetParams.wifiConfigParams));
36455
36456 pWDICtx->pReqStatusUserData = pEventData->pUserData;
36457
36458 /*-------------------------------------------------------------------------
36459 Send Clear Link Layer Stats Request to HAL
36460 -------------------------------------------------------------------------*/
36461 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36462 wdiWifiConfigSetRspCb, pEventData->pUserData,
36463 WDI_WIFI_CONFIG_SET_RSP);
36464 }
36465
36466WDI_Status
36467WDI_ProcessWificonfigSetRsp
36468( WDI_ControlBlockType* pWDICtx,
36469 WDI_EventInfoType* pEventData )
36470
36471{
36472 tHalSetWifiConfigRspParams halRsp;
36473 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36474 WDI_WifconfigSetRsp wdiWifconfigSetRsp;
36475
36476 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36477 "%s: %d Enter",__func__, __LINE__);
36478
36479 /*-------------------------------------------------------------------------
36480 Sanity check
36481 -------------------------------------------------------------------------*/
36482 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36483 ( NULL == pEventData->pEventData))
36484 {
36485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36486 "%s: Invalid parameters", __func__);
36487 WDI_ASSERT(0);
36488 return WDI_STATUS_E_FAILURE;
36489 }
36490 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pWDICtx->pfncRspCB;
36491
36492 /*-------------------------------------------------------------------------
36493 Extract response and send it to UMAC
36494 -------------------------------------------------------------------------*/
36495 wpalMemoryCopy(&halRsp, pEventData->pEventData, sizeof(halRsp));
36496
36497 wdiWifconfigSetRsp.wificonfigset_status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36498
36499 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36500 "WifiConfig RSP status = %d",
36501 wdiWifconfigSetRsp.wificonfigset_status);
36502 /*Notify UMAC*/
36503 wdiWifiConfigSetRspCb( &wdiWifconfigSetRsp, pWDICtx->pRspCBUserData);
36504
36505 return WDI_STATUS_SUCCESS;
36506}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036507
36508#ifdef FEATURE_OEM_DATA_SUPPORT
36509
36510/**
36511 @brief WDI_StartOemDataReqIndNew
36512
36513 @param pOemDataReqNewConfig: Req parameter for the FW
36514
36515 @return SUCCESS or FAIL
36516*/
36517WDI_Status
36518WDI_StartOemDataReqIndNew
36519(
36520 WDI_OemDataReqNewConfig *pOemDataReqNewConfig
36521)
36522{
36523 WDI_EventInfoType wdiEventData;
36524
36525 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36526 "%s: %d",__func__, __LINE__);
36527 /*------------------------------------------------------------------------
36528 Sanity Check
36529 ------------------------------------------------------------------------*/
36530 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36531 {
36532 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36533 "WDI API call before module is initialized - Fail request");
36534
36535 return WDI_STATUS_E_NOT_ALLOWED;
36536 }
36537
36538 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ_IND_NEW;
36539 wdiEventData.pEventData = pOemDataReqNewConfig;
36540 wdiEventData.uEventDataSize = sizeof(*pOemDataReqNewConfig);
36541 wdiEventData.pCBfnc = NULL;
36542 wdiEventData.pUserData = NULL;
36543
36544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36545}
36546
36547/**
36548 @brief WDI_ProcessStartOemDataReqIndNew -
36549 Send OEM Data request new indication to FW
36550
36551 @param pWDICtx : wdi context
36552 pEventData : indication data
36553
36554 @see
36555 @return none
36556*/
36557WDI_Status
36558WDI_ProcessStartOemDataReqIndNew
36559(
36560 WDI_ControlBlockType* pWDICtx,
36561 WDI_EventInfoType* pEventData
36562)
36563{
36564 WDI_OemDataReqNewConfig* wdiOemDataReqNewConfig;
36565 wpt_uint8* pSendBuffer = NULL;
36566 wpt_uint16 usSendSize = 0;
36567 wpt_uint16 usDataOffset = 0;
36568 tpStartOemDataReqParamsNew pHalStartOemDataReqParamsNew;
36569 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36570
36571 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36572 "%s: %d",__func__, __LINE__);
36573
36574 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36575 ( NULL == pEventData->pEventData))
36576 {
36577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36578 "%s: Invalid parameters", __func__);
36579 WDI_ASSERT(0);
36580 return WDI_STATUS_E_FAILURE;
36581 }
36582
36583 wdiOemDataReqNewConfig =
36584 (WDI_OemDataReqNewConfig *)pEventData->pEventData;
36585
36586 /*-----------------------------------------------------------------------
36587 Get message buffer
36588 -----------------------------------------------------------------------*/
36589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36590 pWDICtx,
36591 WDI_START_OEM_DATA_REQ_IND_NEW,
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036592 sizeof(*pHalStartOemDataReqParamsNew),
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036593 &pSendBuffer, &usDataOffset,
36594 &usSendSize))||
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036595 ( usSendSize < (usDataOffset + sizeof(*pHalStartOemDataReqParamsNew) )))
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036596 {
36597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36598 "Unable to get send buffer in %s %p %p", __func__,
36599 pEventData, wdiOemDataReqNewConfig);
36600 WDI_ASSERT(0);
36601 return WDI_STATUS_E_FAILURE;
36602 }
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036603
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036604 pHalStartOemDataReqParamsNew =
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036605 (tpStartOemDataReqParamsNew) (pSendBuffer + usDataOffset);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036606
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036607 wpalMemoryCopy(pHalStartOemDataReqParamsNew,
36608 wdiOemDataReqNewConfig,
36609 sizeof(*pHalStartOemDataReqParamsNew));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036610
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036611 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36612 "%s: selfMacAddr: " MAC_ADDRESS_STR" ", __func__,
36613 MAC_ADDR_ARRAY(pHalStartOemDataReqParamsNew->selfMacAddr));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036614
36615 pWDICtx->pReqStatusUserData = NULL;
36616 pWDICtx->pfncRspCB = NULL;
36617
36618 /*-------------------------------------------------------------------------
36619 Send WDI_START_OEM_DATA_REQ_IND_NEW Request to HAL
36620 -------------------------------------------------------------------------*/
36621 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36622 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36623}
36624
36625/**
36626 @brief Process OemDataRsp New Indication indication from FW
36627
36628 @param pWDICtx: pointer to the WLAN DAL context
36629 pEventData: pointer to the event information structure
36630
36631 @see
36632 @return Result of the function call
36633*/
36634WDI_Status
36635WDI_ProcessStartOemDataRspIndNew
36636(
36637 WDI_ControlBlockType* pWDICtx,
36638 WDI_EventInfoType* pEventData
36639)
36640{
36641 WDI_LowLevelIndType wdiInd;
36642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36643
36644 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36645 "%s: ", __func__);
36646
36647 /* sanity check */
36648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36649 ( NULL == pEventData->pEventData))
36650 {
36651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36652 "%s: Invalid parameters", __func__);
36653 WDI_ASSERT(0);
36654 return WDI_STATUS_E_FAILURE;
36655 }
36656
36657 /* Fill in the indication parameters */
36658 wdiInd.wdiIndicationType = WDI_START_OEM_DATA_RSP_IND_NEW;
36659
Padma, Santhosh Kumarf75c37b2016-01-25 10:36:08 +053036660 wdiInd.wdiIndicationData.wdiOemDataRspNew.pOemRspNewIndData =
36661 (void *)pEventData->pEventData;
36662 wdiInd.wdiIndicationData.wdiOemDataRspNew.OemRspNewLen =
36663 pEventData->uEventDataSize;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036664 /* Notify UMAC */
36665 if (pWDICtx->wdiLowLevelIndCB)
36666 {
36667 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36668 }
36669 else
36670 {
36671 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36672 "%s: WDILowLevelIndCb is null", __func__);
36673 WDI_ASSERT(0);
36674 return WDI_STATUS_E_FAILURE;
36675 }
36676 return WDI_STATUS_SUCCESS;
36677} /* End of WDI_ProcessEXTScanResultInd */
36678
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053036679/**
36680 @brief Process Current Antenna Index information from FW
36681
36682 @param pWDICtx: pointer to the WLAN DAL context
36683 pEventData: pointer to the event information structure
36684
36685 @see
36686 @return Result of the function call
36687*/
36688WDI_Status
36689WDI_ProcessGetCurrentAntennaIndexRsp
36690(
36691 WDI_ControlBlockType* pWDICtx,
36692 WDI_EventInfoType* pEventData
36693)
36694{
36695 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
36696 tHalAntennaDiversitySelectionRspParams *pHalAntDivSelRsp;
36697
36698 /*-------------------------------------------------------------------------
36699 Sanity check
36700 -------------------------------------------------------------------------*/
36701 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36702 ( NULL == pEventData->pEventData))
36703 {
36704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36705 "%s: Invalid parameters", __func__);
36706 WDI_ASSERT(0);
36707 return WDI_STATUS_E_FAILURE;
36708 }
36709 pHalAntDivSelRsp =
36710 (tHalAntennaDiversitySelectionRspParams*)pEventData->pEventData;
36711 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pWDICtx->pfncRspCB;
36712
36713 if (pHalAntDivSelRsp->status != 0)
36714 {
36715 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_E_FAILURE,
36716 (void *)pHalAntDivSelRsp, pWDICtx->pRspCBUserData);
36717 }
36718 else
36719 {
36720 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_SUCCESS,
36721 (void *)pHalAntDivSelRsp,
36722 pWDICtx->pRspCBUserData);
36723 }
36724
36725 return WDI_STATUS_SUCCESS;
36726}
36727
36728/**
36729 @brief Process Get Current Antenna Index request command
36730
36731 @param pWDICtx: pointer to the WLAN DAL context
36732 pEventData: pointer to the event information structure
36733
36734 @see
36735 @return Result of the function call
36736*/
36737WDI_Status
36738WDI_ProcessGetCurrentAntennaIndex
36739(
36740 WDI_ControlBlockType* pWDICtx,
36741 WDI_EventInfoType* pEventData
36742)
36743{
36744 wpt_uint8* pSendBuffer = NULL;
36745 wpt_uint16 usDataOffset = 0;
36746 wpt_uint16 usSendSize = 0;
36747 tHalAntennaDiversitySelectionReqParams halAntDivSelReq;
36748 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
36749
36750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36751 "%s", __func__);
36752
36753 /*-------------------------------------------------------------------------
36754 Sanity check
36755 -------------------------------------------------------------------------*/
36756 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
36757 ( NULL == pEventData->pCBfnc ))
36758 {
36759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36760 "%s: Invalid parameters", __func__);
36761 WDI_ASSERT(0);
36762 return WDI_STATUS_E_FAILURE;
36763 }
36764 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pEventData->pCBfnc;
36765
36766 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36767 WDI_ANTENNA_DIVERSITY_SELECTION_REQ,
36768 sizeof(tHalAntennaDiversitySelectionReqParams),
36769 &pSendBuffer, &usDataOffset, &usSendSize))||
36770 ( usSendSize < (usDataOffset +
36771 sizeof(tHalAntennaDiversitySelectionReqParams) )))
36772 {
36773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36774 "Unable to get send buffer in GetCurrentAntennaIndex %p",
36775 pEventData);
36776 WDI_ASSERT(0);
36777 return WDI_STATUS_E_FAILURE;
36778 }
36779 pWDICtx->wdiReqStatusCB = NULL;
36780 pWDICtx->pReqStatusUserData = pEventData->pEventData;
36781 halAntDivSelReq.reserved = *((wpt_uint32 *)(pEventData->pEventData));
36782 wpalMemoryCopy( pSendBuffer+usDataOffset,
36783 &halAntDivSelReq,
36784 sizeof(tHalAntennaDiversitySelectionReqParams));
36785
36786 /*-------------------------------------------------------------------------
36787 Send Get STA Request to HAL
36788 -------------------------------------------------------------------------*/
36789 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36790 wdiGetCurrentAntennaIndexRspCb,
36791 pEventData->pUserData,
36792 WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
36793}
36794
36795/**
36796 @brief WDI_GetCurrentAntennaIndex
36797
36798 @param pOemDataReqNewConfig: Req parameter for the FW
36799
36800 @return SUCCESS or FAIL
36801*/
36802WDI_Status
36803WDI_GetCurrentAntennaIndex
36804(
36805 void *pUserData,
36806 WDI_AntennaDivSelRspCb wdiAntennaDivSelRspCb,
36807 wpt_uint32 reserved
36808)
36809{
36810 WDI_EventInfoType wdiEventData;
36811
36812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36813
36814 /*------------------------------------------------------------------------
36815 Sanity Check
36816 ------------------------------------------------------------------------*/
36817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36818 {
36819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36820 "WDI API call before module is initialized - Fail request");
36821 return WDI_STATUS_E_NOT_ALLOWED;
36822 }
36823 /*------------------------------------------------------------------------
36824 Fill in Event data and post to the Main FSM
36825 ------------------------------------------------------------------------*/
36826 wdiEventData.wdiRequest = WDI_ANTENNA_DIVERSITY_SELECTION_REQ;
36827 wdiEventData.pEventData = (void *)&reserved;
36828 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36829 wdiEventData.pCBfnc = wdiAntennaDivSelRspCb;
36830 wdiEventData.pUserData = pUserData;
36831
36832 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36833}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036834#endif