blob: a8d24cbc5f1208646de5d4416a7ae1ec68b856e5 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05302 * Copyright (c) 2012-2015 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
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530221};
Jeff Johnson295189b2012-06-20 16:38:30 -0700222
223/*--------------------------------------------------------------------------
224 WLAN DAL State Machine
225 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700226WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700227{
228 /*WDI_INIT_ST*/
229 {{
230 WDI_MainStart, /*WDI_START_EVENT*/
231 NULL, /*WDI_STOP_EVENT*/
232 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
233 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
234 WDI_MainClose, /*WDI_CLOSE_EVENT*/
235 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
236 }},
237
238 /*WDI_STARTED_ST*/
239 {{
240 WDI_MainStartStarted, /*WDI_START_EVENT*/
241 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
242 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
243 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
244 NULL, /*WDI_CLOSE_EVENT*/
245 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
246 }},
247
248 /*WDI_STOPPED_ST*/
249 {{
250 WDI_MainStart, /*WDI_START_EVENT*/
251 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
252 NULL, /*WDI_REQUEST_EVENT*/
253 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
254 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700255 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700256 }},
257
258 /*WDI_BUSY_ST*/
259 {{
260 WDI_MainStartBusy, /*WDI_START_EVENT*/
261 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
262 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
263 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
264 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
265 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
266 }}
267};
268
Jeff Johnsone7245742012-09-05 17:12:55 -0700269/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700270 DAL Request Processing Array - the functions in this table will only be
271 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700272 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700273 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700274WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700275{
276 /*INIT*/
277 WDI_ProcessStartReq, /* WDI_START_REQ */
278 WDI_ProcessStopReq, /* WDI_STOP_REQ */
279 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
280
281 /*SCAN*/
282 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
283 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
284 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
285 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
286
287 /*ASSOCIATION*/
288 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
289 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
290 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
291 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
292 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
293
294 /* Security */
295 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
296 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
297 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
298 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
299
300 /* QoS and BA APIs */
301 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
302 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
303 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
304 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
305 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
306
307 /* Miscellaneous Control APIs */
308 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
309 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
310 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
311 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
312 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
313
314 /*BA APIs*/
315 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
316 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
317
318 /*Beacon processing APIs*/
319 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
320 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
321
322 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
323 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
324 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
325 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700326 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700327 /* PowerSave APIs */
328 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
329 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
330 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
331 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
332 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
333 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
334 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
335 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
336 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
337 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
338 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
339 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
340 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
341 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
342 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
343 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
344 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
345 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
346 /*NV Download APIs*/
347 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
348 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
349 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
350#ifdef WLAN_FEATURE_VOWIFI_11R
351 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
352#else
353 NULL,
354#endif /* WLAN_FEATURE_VOWIFI_11R */
355 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
356 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700357 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700358
359#ifdef FEATURE_OEM_DATA_SUPPORT
360 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
361#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700362 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700363#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700364 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700365
366 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700367
368#ifdef FEATURE_WLAN_SCAN_PNO
369 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
370 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
371 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
372#else
373 NULL,
374 NULL,
375 NULL,
376#endif /* FEATURE_WLAN_SCAN_PNO */
377
378 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700379
Jeff Johnson295189b2012-06-20 16:38:30 -0700380#ifdef WLAN_FEATURE_PACKET_FILTERING
381 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700382 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700383 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700384 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700385 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700386 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700387 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700388 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700389#else
390 NULL,
391 NULL,
392 NULL,
393 NULL,
394#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700395 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700396 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
397 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
398
399 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800400#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700401 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
402#else
403 NULL,
404#endif
405
406#ifdef WLAN_FEATURE_GTK_OFFLOAD
407 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
408 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
409#else
410 NULL,
411 NULL,
412#endif // WLAN_FEATURE_GTK_OFFLOAD
413
414 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
415 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700416#ifdef WLAN_FEATURE_11AC
417 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800418#else
419 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700420#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800421#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800422 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
423#else
schang86c22c42013-03-13 18:41:24 -0700424 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800425#endif
schang86c22c42013-03-13 18:41:24 -0700426 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700427#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700428 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700429#else
430 NULL,
431#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530432#ifdef FEATURE_WLAN_TDLS
433 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
434#else
435 NULL,
436#endif
Leo Chang9056f462013-08-01 19:21:11 -0700437#ifdef FEATURE_WLAN_LPHB
438 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
439#else
440 NULL,
441#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530442
443#ifdef FEATURE_WLAN_BATCH_SCAN
444 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
445#else
446 NULL,
447#endif /* FEATURE_WLAN_BATCH_SCAN */
448
Arif Hussaina5ebce02013-08-09 15:09:58 -0700449 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800450
451 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530452
453 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530454
455#ifdef WLAN_FEATURE_LINK_LAYER_STATS
456 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
457 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
458 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
459#else
460 NULL,
461 NULL,
462 NULL,
463#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530464#ifdef WLAN_FEATURE_EXTSCAN
465 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
466 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
467 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
468 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
469 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
470 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530471 WDI_ProcessEXTScanSetSSIDHotlistReq, /* WDI_EXTSCAN_SET_SSID_HOTLIST_REQ */
472 WDI_ProcessEXTScanResetSSIDHotlistReq, /* WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ */
Dino Mycle41bdc942014-06-10 11:30:24 +0530473#else
474 NULL,
475 NULL,
476 NULL,
477 NULL,
478 NULL,
479 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530480 NULL,
481 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530482#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530483 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530484
485 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530486
487 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530488
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530489 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530490 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530491
492 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
493
Katya Nigamf0511f62015-05-05 16:40:57 +0530494 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
495 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530496 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530497 WDI_ProcessFwrMemDumpReq, /* WDI_FWR_MEM_DUMP_REQ*/
498
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530499 WDI_ProcessRssiMonitorStartReq, /* WDI_START_RSSI_MONITOR_REQ */
500 WDI_ProcessRssiMonitorStopReq, /* WDI_STOP_RSSI_MONITOR_REQ */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530501
502 WDI_ProcessWifiConfigReq, /*WDI_WIFI_CONFIG_SET_REQ*/
schang86c22c42013-03-13 18:41:24 -0700503 /*-------------------------------------------------------------------------
504 Indications
505 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700506 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800507 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530508 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
509 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700510#ifdef WLAN_FEATURE_11W
511 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
512#else
513 NULL,
514#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700515 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
516 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530517#ifdef FEATURE_WLAN_BATCH_SCAN
518 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
519 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
520#else
521 NULL,
522 NULL,
523#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700524 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800525
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530526 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800527 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
528
529 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530530#ifdef FEATURE_WLAN_TDLS
531 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
532#else
533 NULL,
534#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530535 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530536 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +0530537 WDI_ProcessEnableDisableCAEventInd, /* WDI_SEND_FREQ_RANGE_CONTROL_IND */
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +0530538
539#ifdef WLAN_FEATURE_EXTSCAN
540 WDI_ProcessHighPriorityDataInfoInd, /* WDI_HIGH_PRIORITY_DATA_INFO_IND */
541#else
542 NULL,
543#endif /* WLAN_FEATURE_EXTSCAN */
544
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530545#ifdef FEATURE_OEM_DATA_SUPPORT
546 WDI_ProcessStartOemDataReqIndNew, /* WDI_START_OEM_DATA_REQ_IND_NEW */
547#else
548 NULL,
549#endif /* FEATURE_OEM_DATA_SUPPORT */
550
Jeff Johnson295189b2012-06-20 16:38:30 -0700551};
552
553
Jeff Johnsone7245742012-09-05 17:12:55 -0700554/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700555 DAL Request Processing Array - the functions in this table will only be
556 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700557 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700558 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700559WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700560{
561 /*INIT*/
562 WDI_ProcessStartRsp, /* WDI_START_RESP */
563 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
564 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
565
566 /*SCAN*/
567 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
568 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
569 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
570 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
571
572 /* ASSOCIATION*/
573 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
574 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
575 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
576 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
577 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
578
579 /* Security */
580 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
581 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
582 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
583 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
584
585 /* QoS and BA APIs */
586 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
587 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
588 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
589 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
590 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
591
592 /* Miscellaneous Control APIs */
593 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
594 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
595 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
596 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
597 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
598
599 /* BA APIs*/
600 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
601 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700602
Jeff Johnson295189b2012-06-20 16:38:30 -0700603 /* IBSS APIs*/
604 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
605 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
606
607 /*Soft AP APIs*/
608 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
609 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
610 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
611 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
612
613 /* PowerSave APIs */
614 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
615 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
616 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
617 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
618 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
619 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
620 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
621 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
622 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
623 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
624 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
625 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
626 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
627 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
628 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
629 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
630 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
631 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700632
Jeff Johnson295189b2012-06-20 16:38:30 -0700633
634 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
635
636 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
637 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
638#ifdef WLAN_FEATURE_VOWIFI_11R
639 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
640#else
641 NULL,
642#endif /* WLAN_FEATURE_VOWIFI_11R */
643 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
644 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700645#ifdef FEATURE_OEM_DATA_SUPPORT
646 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
647#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700648 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700649#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700650 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
651
Jeff Johnson295189b2012-06-20 16:38:30 -0700652 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700653
Jeff Johnson295189b2012-06-20 16:38:30 -0700654 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700655
Jeff Johnsone7245742012-09-05 17:12:55 -0700656 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
657
Jeff Johnson295189b2012-06-20 16:38:30 -0700658#ifdef FEATURE_WLAN_SCAN_PNO
659 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
660 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
661 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
662#else
663 NULL,
664 NULL,
665 NULL,
666#endif // FEATURE_WLAN_SCAN_PNO
667
668 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700669 /*---------------------------------------------------------------------
670 Indications
671 ---------------------------------------------------------------------*/
672#ifdef WLAN_FEATURE_PACKET_FILTERING
673 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700674 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700675 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700676 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700677 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700678 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700679 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700680 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700681#else
682 NULL,
683 NULL,
684 NULL,
685 NULL,
686#endif // WLAN_FEATURE_PACKET_FILTERING
687
688 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
689 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
690
691 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800692#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700693 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
694#else
695 NULL,
696#endif
697
698#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700699 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
700 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700701#else
702 NULL,
703 NULL,
704#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700705 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
706 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700707#ifdef WLAN_FEATURE_11AC
708 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700709#else
710 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700711#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800712#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800713 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
714#else
715 NULL,
716#endif
schang86c22c42013-03-13 18:41:24 -0700717 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700718#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700719 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700720#else
721 NULL,
722#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530723#ifdef FEATURE_WLAN_TDLS
724 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
725#else
726 NULL,
727#endif
Leo Chang9056f462013-08-01 19:21:11 -0700728#ifdef FEATURE_WLAN_LPHB
729 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
730#else
731 NULL,
732#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530733
734#ifdef FEATURE_WLAN_BATCH_SCAN
735 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
736#else
737 NULL,
738#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800739 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530740
c_hpothu92367912014-05-01 15:18:17 +0530741 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800742
c_hpothu92367912014-05-01 15:18:17 +0530743 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
744
745 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800746
Sunil Duttbd736ed2014-05-26 21:19:41 +0530747
748#ifdef WLAN_FEATURE_LINK_LAYER_STATS
749 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
750 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
751 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
752#else
753 NULL,
754 NULL,
755 NULL,
756#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530757#ifdef WLAN_FEATURE_EXTSCAN
758 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
759 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
760 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
761 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
762 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
763 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530764 WDI_ProcessEXTScanSetHotlistSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_SSID_RSP */
765 WDI_ProcessEXTScanResetHotlistSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP */
Dino Mycle41bdc942014-06-10 11:30:24 +0530766#else
767 NULL,
768 NULL,
769 NULL,
770 NULL,
771 NULL,
772 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530773 NULL,
774 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530775#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530776 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530777
778 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530779
780 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530781 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530782 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530783
Srinivas Dasari32a79262015-02-19 13:04:49 +0530784 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
785
Katya Nigamf0511f62015-05-05 16:40:57 +0530786 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
787 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530788 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530789 WDI_ProcessFwrMemDumpRsp, /* WDI_FWR_MEM_DUMP_RSP */
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530790 WDI_ProcessRssiMonitorStartRsp, /* WDI_START_RSSI_MONITOR_RSP*/
791 WDI_ProcessRssiMonitorStopRsp, /* WDI_STOP_RSSI_MONITOR_RSP*/
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530792
793 WDI_ProcessWificonfigSetRsp, /* /WDI_WIFI_CONFIG_SET_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700794 /*---------------------------------------------------------------------
795 Indications
796 ---------------------------------------------------------------------*/
797 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
798 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
799 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
800 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
801 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
802 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
803
804 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
805
806 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
807
Jeff Johnson295189b2012-06-20 16:38:30 -0700808 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700809
810#ifdef FEATURE_WLAN_SCAN_PNO
811 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
812#else
813 NULL,
814#endif // FEATURE_WLAN_SCAN_PNO
815
816#ifdef WLAN_WAKEUP_EVENTS
817 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
818#else // WLAN_WAKEUP_EVENTS
819 NULL,
820#endif // WLAN_WAKEUP_EVENTS
821
822 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800823
Viral Modid86bde22012-12-10 13:09:21 -0800824 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530825#ifdef FEATURE_WLAN_TDLS
826 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
827#else
828 NULL,
829#endif
Leo Chang9056f462013-08-01 19:21:11 -0700830
831#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700832 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700833#else
834 NULL,
835#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700836
837 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700838
839 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530840
841#ifdef FEATURE_WLAN_BATCH_SCAN
842 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
843#else
844 NULL,
845#endif
846
Leo Chang0b0e45a2013-12-15 15:18:55 -0800847#ifdef FEATURE_WLAN_CH_AVOID
848 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
849#else
850 NULL,
851#endif /* FEATURE_WLAN_CH_AVOID */
852
Sunil Duttbd736ed2014-05-26 21:19:41 +0530853 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
854#ifdef WLAN_FEATURE_LINK_LAYER_STATS
855 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
856#else
857 NULL,
858#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530859#ifdef WLAN_FEATURE_EXTSCAN
860 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
861 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
862 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
863 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530864 WDI_ProcessEXTScanSsidHotListResultInd, /* WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND */
Dino Mycle41bdc942014-06-10 11:30:24 +0530865#else
866 NULL,
867 NULL,
868 NULL,
869 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530870 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530871#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530872#ifdef FEATURE_WLAN_TDLS
873 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
874#else
875 NULL,
876#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530877 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530878 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530879 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530880 WDI_Process_RssiBreachedInd, /* WDI_HAL_RSSI_BREACHED_IND */
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530881#ifdef FEATURE_OEM_DATA_SUPPORT
882 WDI_ProcessStartOemDataRspIndNew, /* WDI_HAL_START_OEM_DATA_RSP_IND_NEW */
883#else
884 NULL,
885#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700886};
887
888
Jeff Johnsone7245742012-09-05 17:12:55 -0700889/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700890 WLAN DAL Global Control Block
891 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700892WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700893static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
894
Jeff Johnsone7245742012-09-05 17:12:55 -0700895const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700896
897/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700898WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700899void* WDI_GET_PAL_CTX( void )
900{
Jeff Johnsone7245742012-09-05 17:12:55 -0700901 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700902}/*WDI_GET_PAL_CTX*/
903
Jeff Johnsone7245742012-09-05 17:12:55 -0700904/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700905 Helper inline converters
906 ============================================================================*/
907/*Convert WDI driver type into HAL driver type*/
908WPT_STATIC WPT_INLINE WDI_Status
909WDI_HAL_2_WDI_STATUS
910(
911 eHalStatus halStatus
912);
913
914/*Convert WDI request type into HAL request type*/
915WPT_STATIC WPT_INLINE tHalHostMsgType
916WDI_2_HAL_REQ_TYPE
917(
918 WDI_RequestEnumType wdiReqType
919);
920
921/*Convert WDI response type into HAL response type*/
922WPT_STATIC WPT_INLINE WDI_ResponseEnumType
923HAL_2_WDI_RSP_TYPE
924(
925 tHalHostMsgType halMsg
926);
927
928/*Convert WDI driver type into HAL driver type*/
929WPT_STATIC WPT_INLINE tDriverType
930WDI_2_HAL_DRV_TYPE
931(
932 WDI_DriverType wdiDriverType
933);
934
935/*Convert WDI stop reason into HAL stop reason*/
936WPT_STATIC WPT_INLINE tHalStopType
937WDI_2_HAL_STOP_REASON
938(
939 WDI_StopType wdiStopType
940);
941
942/*Convert WDI scan mode type into HAL scan mode type*/
943WPT_STATIC WPT_INLINE eHalSysMode
944WDI_2_HAL_SCAN_MODE
945(
946 WDI_ScanMode wdiScanMode
947);
948
949/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700950WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700951WDI_2_HAL_SEC_CH_OFFSET
952(
953 WDI_HTSecondaryChannelOffset wdiSecChOffset
954);
955
956/*Convert WDI BSS type into HAL BSS type*/
957WPT_STATIC WPT_INLINE tSirBssType
958WDI_2_HAL_BSS_TYPE
959(
960 WDI_BssType wdiBSSType
961);
962
963/*Convert WDI NW type into HAL NW type*/
964WPT_STATIC WPT_INLINE tSirNwType
965WDI_2_HAL_NW_TYPE
966(
967 WDI_NwType wdiNWType
968);
969
970/*Convert WDI chanel bonding type into HAL cb type*/
971WPT_STATIC WPT_INLINE ePhyChanBondState
972WDI_2_HAL_CB_STATE
973(
974 WDI_PhyChanBondState wdiCbState
975);
976
977/*Convert WDI chanel bonding type into HAL cb type*/
978WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
979WDI_2_HAL_HT_OPER_MODE
980(
981 WDI_HTOperatingMode wdiHTOperMode
982);
983
984/*Convert WDI mimo PS type into HAL mimo PS type*/
985WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
986WDI_2_HAL_MIMO_PS
987(
988 WDI_HTMIMOPowerSaveState wdiHTOperMode
989);
990
991/*Convert WDI ENC type into HAL ENC type*/
992WPT_STATIC WPT_INLINE tAniEdType
993WDI_2_HAL_ENC_TYPE
994(
995 WDI_EncryptType wdiEncType
996);
997
998/*Convert WDI WEP type into HAL WEP type*/
999WPT_STATIC WPT_INLINE tAniWepType
1000WDI_2_HAL_WEP_TYPE
1001(
1002 WDI_WepType wdiWEPType
1003);
1004
1005/*Convert WDI Link State into HAL Link State*/
1006WPT_STATIC WPT_INLINE tSirLinkState
1007WDI_2_HAL_LINK_STATE
1008(
1009 WDI_LinkStateType wdiLinkState
1010);
1011
Jeff Johnsone7245742012-09-05 17:12:55 -07001012/*Translate a STA Context from WDI into HAL*/
1013WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -07001014void
1015WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -07001016(
Jeff Johnson295189b2012-06-20 16:38:30 -07001017 tConfigStaParams* phalConfigSta,
1018 WDI_ConfigStaReqInfoType* pwdiConfigSta
1019);
Jeff Johnsone7245742012-09-05 17:12:55 -07001020
1021/*Translate a Rate set info from WDI into HAL*/
1022WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -07001023WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -07001024(
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 tSirMacRateSet* pHalRateSet,
1026 WDI_RateSet* pwdiRateSet
1027);
1028
1029/*Translate an EDCA Parameter Record from WDI into HAL*/
1030WPT_STATIC WPT_INLINE void
1031WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -07001032(
Jeff Johnson295189b2012-06-20 16:38:30 -07001033 tSirMacEdcaParamRecord* phalEdcaParam,
1034 WDI_EdcaParamRecord* pWDIEdcaParam
1035);
1036
1037/*Copy a management frame header from WDI fmt into HAL fmt*/
1038WPT_STATIC WPT_INLINE void
1039WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
1040(
1041 tSirMacMgmtHdr* pmacMgmtHdr,
1042 WDI_MacMgmtHdr* pwdiMacMgmtHdr
1043);
1044
1045/*Copy config bss parameters from WDI fmt into HAL fmt*/
1046WPT_STATIC WPT_INLINE void
1047WDI_CopyWDIConfigBSSToHALConfigBSS
1048(
1049 tConfigBssParams* phalConfigBSS,
1050 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1051);
1052
Jeff Johnsone7245742012-09-05 17:12:55 -07001053/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001054 pointed to by user data */
1055WPT_STATIC WPT_INLINE void
1056WDI_ExtractRequestCBFromEvent
1057(
1058 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001059 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001060 void** ppUserData
1061);
1062
1063wpt_uint8
1064WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001065(
Jeff Johnson295189b2012-06-20 16:38:30 -07001066 WDI_ControlBlockType* pWDICtx,
1067 WDI_BSSSessionType** ppSession
1068);
1069
1070void
1071WDI_AddBcastSTAtoSTATable
1072(
1073 WDI_ControlBlockType* pWDICtx,
1074 WDI_AddStaParams * staParams,
1075 wpt_uint16 usBcastStaIdx
1076);
1077
1078WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001079(
Jeff Johnson295189b2012-06-20 16:38:30 -07001080 WDI_ControlBlockType* pWDICtx,
1081 WDI_EventInfoType* pEventData
1082);
1083
1084void
1085WDI_SetPowerStateCb
1086(
1087 wpt_status status,
1088 unsigned int dxePhyAddr,
1089 void *pContext
1090);
1091
Jeff Johnson295189b2012-06-20 16:38:30 -07001092/**
1093 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001094
1095 @param wdiReqMsgId: WDI Message request Id
1096
1097 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001098 @return Result of the function call
1099*/
1100static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1101{
1102 switch (wdiReqMsgId)
1103 {
1104 CASE_RETURN_STRING( WDI_START_REQ );
1105 CASE_RETURN_STRING( WDI_STOP_REQ );
1106 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1107 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1108 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1109 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1110 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1111 CASE_RETURN_STRING( WDI_JOIN_REQ );
1112 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1113 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1114 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1115 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1116 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1117 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1118 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1119 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1120 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1121 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1122 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1123 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1124 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1125 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001126 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001127 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1128 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1129 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1130 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1131 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1132 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1133 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1134 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1135 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1136 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1137 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1138 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001139 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001140 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301141#ifdef FEATURE_WLAN_TDLS
1142 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301143 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301144#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001145 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1146 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1147 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1148 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1149 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1150 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1151 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1152 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1153 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1154 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1155 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1156 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1157 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1158 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1159 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1160 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1161 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1162 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1163 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1164 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1165 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1166 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1167 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1168 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1169 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001170 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001171 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1172 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1173 #ifdef FEATURE_WLAN_SCAN_PNO
1174 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1175 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1176 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1177 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001178#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001179 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001180#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001181 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1182 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1183 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1184 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1185 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1186 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1187 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1188 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1189 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301190 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001191 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001192 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001193#ifdef WLAN_FEATURE_11W
1194 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1195#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301196#ifdef FEATURE_WLAN_BATCH_SCAN
1197 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1198 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1199 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1200#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301201 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1202 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001203 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301204#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1205 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1206 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1207 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1208#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301209#ifdef WLAN_FEATURE_EXTSCAN
1210 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1211 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1212 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1213 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1214 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1215 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301216 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SSID_HOTLIST_REQ);
1217 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ);
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +05301218 CASE_RETURN_STRING( WDI_HIGH_PRIORITY_DATA_INFO_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301219#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301220 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301221 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301222 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301223 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301224 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301225 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301226 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301227 CASE_RETURN_STRING( WDI_MON_START_REQ );
1228 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301229 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301230 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
c_manjeecfd1efb2015-09-25 19:32:34 +05301231 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_REQ);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301232 CASE_RETURN_STRING( WDI_START_RSSI_MONITOR_REQ );
1233 CASE_RETURN_STRING( WDI_STOP_RSSI_MONITOR_REQ );
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301234 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ_IND_NEW );
Jeff Johnson295189b2012-06-20 16:38:30 -07001235 default:
1236 return "Unknown WDI MessageId";
1237 }
1238}
1239
1240
1241
1242/**
1243 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001244
1245 @param wdiRespMsgId: WDI Message response Id
1246
1247 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001248 @return Result of the function call
1249*/
1250static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1251{
1252 switch (wdiRespMsgId)
1253 {
1254 CASE_RETURN_STRING( WDI_START_RESP );
1255 CASE_RETURN_STRING( WDI_STOP_RESP );
1256 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1257 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1258 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1259 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1260 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1261 CASE_RETURN_STRING( WDI_JOIN_RESP );
1262 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1263 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1264 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1265 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1266 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1267 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1268 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1269 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1270 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1271 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1272 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1273 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1274 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1275 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1276 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1277 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1278 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1279 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1280 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1281 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1282 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1283 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1284 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1285 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1286 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1287 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1288 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301289#ifdef FEATURE_WLAN_TDLS
1290 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301291 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301292 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1293#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001294 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1295 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1296 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1297 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1298 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1299 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1300 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1301 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1302 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1303 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1304 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1305 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1306 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1307 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1308 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1309 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1310 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1311 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1312 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1313 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1314 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1315 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1316 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1317 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1318 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001319 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001320 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1321 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1322 #ifdef FEATURE_WLAN_SCAN_PNO
1323 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1324 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1325 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1326 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001327#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001328 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001329#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001330 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1331 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1332 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1333 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1334 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1335 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1336 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1337 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001338 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301339#ifdef FEATURE_WLAN_BATCH_SCAN
1340 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1341#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001342 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301343 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301344 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301345#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1346 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1347 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1348 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1349#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301350#ifdef WLAN_FEATURE_EXTSCAN
1351 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1352 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1353 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1354 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1355 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1356 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301357 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
1358 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301359 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1360 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1361 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1362 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301363 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301364#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301365 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301366 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301367 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301368 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301369 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
c_manjeecfd1efb2015-09-25 19:32:34 +05301370 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_RSP);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301371 CASE_RETURN_STRING (WDI_START_RSSI_MONITOR_RSP);
1372 CASE_RETURN_STRING (WDI_STOP_RSSI_MONITOR_RSP);
Arun Khandavalli7eeb1592015-10-19 21:36:57 +05301373 CASE_RETURN_STRING( WDI_WIFI_CONFIG_SET_RSP);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301374#ifdef FEATURE_OEM_DATA_SUPPORT
1375 CASE_RETURN_STRING (WDI_HAL_START_OEM_DATA_RSP_IND_NEW);
1376#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001377 default:
1378 return "Unknown WDI MessageId";
1379 }
1380}
1381
1382/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301383 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1384 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301385 @param capabilityBitmap - Base address of a 4 element Bitmap array
1386 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301387 @see
1388 @returns None
1389 */
1390void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1391{
Abhishek Singh08b60122014-02-04 18:05:23 +05301392 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301393 char *pTempCapStr = NULL;
1394 char *pCapStr = NULL;
1395 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1396 if (NULL == pTempCapStr)
1397 {
1398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1399 "Memory allocation failed for CapStr");
1400 return;
1401 }
1402
1403 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301404 for (j = 0; j < 4; j++) {
1405 for (i = 0; i < 32; i++) {
1406 if ((*(capabilityBitmap + j) & (1 << i))) {
1407 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301408 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1409 pCapStr += strlen("MCC");
1410 break;
1411 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1412 pCapStr += strlen("P2P");
1413 break;
1414 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1415 pCapStr += strlen("DOT11AC");
1416 break;
1417 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1418 pCapStr += strlen("SLM_SESSIONIZATION");
1419 break;
1420 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1421 pCapStr += strlen("DOT11AC_OPMODE");
1422 break;
1423 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1424 pCapStr += strlen("SAP32STA");
1425 break;
1426 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1427 pCapStr += strlen("TDLS");
1428 break;
1429 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1430 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1431 break;
1432 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1433 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1434 break;
1435 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1436 pCapStr += strlen("BEACON_OFFLOAD");
1437 break;
1438 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1439 pCapStr += strlen("SCAN_OFFLOAD");
1440 break;
1441 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1442 pCapStr += strlen("ROAM_OFFLOAD");
1443 break;
1444 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1445 pCapStr += strlen("BCN_MISS_OFFLOAD");
1446 break;
1447 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1448 pCapStr += strlen("STA_POWERSAVE");
1449 break;
1450 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1451 pCapStr += strlen("AP_UAPSD");
1452 break;
1453 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1454 pCapStr += strlen("AP_DFS");
1455 break;
1456 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1457 pCapStr += strlen("BLOCKACK");
1458 break;
1459 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1460 pCapStr += strlen("PHY_ERR");
1461 break;
1462 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1463 pCapStr += strlen("BCN_FILTER");
1464 break;
1465 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1466 pCapStr += strlen("RTT");
1467 break;
1468 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1469 pCapStr += strlen("RATECTRL");
1470 break;
1471 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1472 pCapStr += strlen("WOW");
1473 break;
1474 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1475 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1476 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301477 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1478 pCapStr += strlen("FW_IN_TX_PATH");
1479 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301480 case HT40_OBSS_SCAN:
1481 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1482 "%s", "HT40_OBSS_SCAN");
1483 pCapStr += strlen("HT40_OBSS_SCAN");
1484 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301485 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1486 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1487 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1488 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1489 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301490 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1491 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1492 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301493 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1494 pCapStr += strlen("CH_SWITCH_V1");
1495 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301496#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1497 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1498 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1499 break;
1500#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301501#ifdef WLAN_FEATURE_EXTSCAN
1502 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1503 pCapStr += strlen("EXTENDED_SCAN");
1504 break;
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +05301505 case EXT_SCAN_ENHANCED: snprintf(pCapStr, sizeof("EXT_SCAN_ENHANCED"), "%s", "EXT_SCAN_ENHANCED");
1506 pCapStr += strlen("EXT_SCAN_ENHANCED");
1507 break;
Dino Myclee8843b32014-07-04 14:21:45 +05301508#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301509 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1510 pCapStr += strlen("MU_MIMO");
1511 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301512
Mihir Shetec34258c2014-07-30 17:50:27 +05301513 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1514 pCapStr += strlen("DYNAMIC_WMM_PS");
1515 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301516 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1517 pCapStr += strlen("FW_STATS");
1518 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301519 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1520 pCapStr += strlen("MAC_SPOOFED_SCAN");
1521 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301522 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1523 pCapStr += strlen("WPS_PRBRSP_TMPL");
1524 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301525 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1526 pCapStr += strlen("BCN_IE_FLT_DELTA");
1527 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301528 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1529 pCapStr += strlen("MGMT_FRAME_LOGGING");
1530 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301531 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1532 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1533 break;
1534
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301535 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1536 pCapStr += strlen("DISA");
1537 break;
1538
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301539 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1540 pCapStr += strlen("TDLS_OFF_CHANNEL");
1541 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301542 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1543 pCapStr += strlen("LOGGING_ENHANCEMENT");
1544 break;
c_manjeecfd1efb2015-09-25 19:32:34 +05301545 case MEMORY_DUMP_SUPPORTED:snprintf(pCapStr, sizeof("FW_MEM_DUMP_LOGGING"), "%s", "FW_MEM_DUMP_LOGGING");
1546 pCapStr += strlen("FW_MEM_DUMP_LOGGING");
1547 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301548 case PER_PKT_STATS_SUPPORTED: snprintf(pCapStr, sizeof("PER_PKT_STATS_SUPPORTED"), "%s", "PER_PKT_STATS_SUPPORTED");
1549 pCapStr += strlen("PER_PKT_STATS_SUPPORTED");
1550 break;
Mukul Sharmaf1bd9322015-10-20 16:03:42 +05301551 case EXT_LL_STAT: snprintf(pCapStr, sizeof("EXT_LL_STAT"), "%s", "EXT_LL_STAT");
1552 pCapStr += strlen("EXT_LL_STAT");
1553 break;
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +05301554 case RTT3: snprintf(pCapStr, sizeof("RTT3"), "%s", "RTT3");
1555 pCapStr += strlen("RTT3");
1556 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301557
Abhishek Singh08b60122014-02-04 18:05:23 +05301558 }
1559 *pCapStr++ = ',';
1560 *pCapStr++ = ' ';
1561 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301562 }
1563 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301564 pCapStr -= 2;
1565 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301567 if (pTempCapStr)
1568 {
1569 vos_mem_free(pTempCapStr);
1570 pTempCapStr = NULL;
1571 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301572}
1573
1574/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001575 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001576
1577 @param halStatusId: HAL status Id
1578
1579 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001580 @return Result of the function call
1581*/
1582static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1583{
1584 switch (halStatusId)
1585 {
1586 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1587 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1588 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1589 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1590 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1591 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1592 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1593 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1594 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1595 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1596 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1597 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1598 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1599 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1600 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1601 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1602 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1603 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1604 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1605 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1606 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1607 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1608 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1609 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1610 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1611 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1612 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1613 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1614 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1615 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1616 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1617 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1618 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1619 default:
1620 return "Unknown HAL status";
1621 }
1622}
1623
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301624/**
1625 * wdi_state_info_dump() - prints state information of wdi layer
1626 */
1627static void wdi_state_info_dump(void)
1628{
1629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1630 "%s pending commands: %d", __func__,
1631 gWDICb.wptPendingQueue.count);
1632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1633 "uGlobalState %d wdiExpectedResponse: %d",
1634 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
1635}
1636
1637
1638/**
1639 * wdi_register_debug_callback() - registration function for wdi layer
1640 * to print WDI state information
1641 */
1642static void wdi_register_debug_callback(void)
1643{
1644 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
1645}
1646
1647
Jeff Johnsone7245742012-09-05 17:12:55 -07001648/*========================================================================
1649
Jeff Johnson295189b2012-06-20 16:38:30 -07001650 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001651
Jeff Johnson295189b2012-06-20 16:38:30 -07001652==========================================================================*/
1653
1654/**
1655 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001656
Jeff Johnson295189b2012-06-20 16:38:30 -07001657 DAL will allocate all the resources it needs. It will open PAL, it will also
1658 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001659 DXE/SMD or any other drivers that they need.
1660
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301661 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001662 ppWDIGlobalCtx: output pointer of Global Context
1663 pWdiDevCapability: output pointer of device capability
1664
1665 @return Result of the function call
1666*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001667WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001668WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001669(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301670 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001671 void** ppWDIGlobalCtx,
1672 WDI_DeviceCapabilityType* pWdiDevCapability,
1673 unsigned int driverType
1674)
1675{
1676 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001677 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001678 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001679 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1681
1682 /*---------------------------------------------------------------------
1683 Sanity check
1684 ---------------------------------------------------------------------*/
1685 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1686 {
1687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1688 "Invalid input parameters in WDI_Init");
1689
Jeff Johnsone7245742012-09-05 17:12:55 -07001690 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001691 }
1692
1693 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001694 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001695 ---------------------------------------------------------------------*/
1696 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1697 {
1698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1699 "WDI module already initialized - return");
1700
Jeff Johnsone7245742012-09-05 17:12:55 -07001701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001702 }
1703
1704 /*Module is now initialized - this flag is to ensure the fact that multiple
1705 init will not happen on WDI
1706 !! - potential race does exist because read and set are not atomic,
1707 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001708 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001709
1710 /*Setup the control block */
1711 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301712 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001713
1714 /*Setup the STA Table*/
1715 wdiStatus = WDI_STATableInit(&gWDICb);
1716 if ( WDI_STATUS_SUCCESS != wdiStatus )
1717 {
1718 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1719 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001720 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001721 goto fail_STATableInit;
1722 }
1723
1724 /*------------------------------------------------------------------------
1725 Open the PAL
1726 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301727 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1729 {
1730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1731 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001732 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001733 goto fail_wpalOpen;
1734 }
1735
1736 /*Initialize main synchro mutex - it will be used to ensure integrity of
1737 the main WDI Control Block*/
1738 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1739 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1740 {
1741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1742 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001743 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 goto fail_mutex;
1745 }
1746
1747 /*Initialize the response timer - it will be used to time all messages
1748 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001749 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1750 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001751 &gWDICb);
1752 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1753 {
1754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1755 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001756 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001757 goto fail_timer;
1758 }
1759
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001760 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1761 WDI_SsrTimerCB,
1762 &gWDICb);
1763 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1764 {
1765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1766 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001767 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001768 goto fail_timer2;
1769 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001770 /* Initialize the WDI Pending Request Queue*/
1771 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
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 pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001776 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001777 goto fail_pend_queue;
1778 }
1779
1780 /*Init WDI Pending Assoc Id Queue */
1781 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1782 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1783 {
1784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1785 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001786 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001787 goto fail_assoc_queue;
1788 }
1789
1790 /*Initialize the BSS sessions pending Queue */
1791 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1792 {
1793 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1794 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1795 {
1796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1797 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001798 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001799 goto fail_bss_queue;
1800 }
1801 }
1802
1803 /*Indicate the control block is sufficiently initialized for callbacks*/
1804 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1805
1806 /*------------------------------------------------------------------------
1807 Initialize the Data Path Utility Module
1808 ------------------------------------------------------------------------*/
1809 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1810 if ( WDI_STATUS_SUCCESS != wdiStatus )
1811 {
1812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1813 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001814 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001815 goto fail_dp_util_init;
1816 }
1817
1818 /* Init Set power state event */
1819 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001820 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001821 {
1822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1823 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001824 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001825 goto fail_power_event;
1826 }
1827
1828 /* Init WCTS action event */
1829 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001830 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001831 {
1832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1833 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001834 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001835 goto fail_wcts_event;
1836 }
1837
1838 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001839 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001840 ------------------------------------------------------------------------*/
1841 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1842 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001843 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001844 wctsCBs.wctsRxMsgCBData = &gWDICb;
1845
Jeff Johnsone7245742012-09-05 17:12:55 -07001846 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001848 WDI_CT_CHANNEL_SIZE,
1849 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001850
1851 if ( NULL == gWDICb.wctsHandle )
1852 {
1853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001854 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001855 goto fail_wcts_open;
1856 }
1857
1858 gWDICb.driverMode = (tDriverType)driverType;
1859 /* FTM mode not need to open Transport Driver */
1860 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001861 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001862 /*------------------------------------------------------------------------
1863 Open the Data Transport
1864 ------------------------------------------------------------------------*/
1865 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1866 {
1867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001868 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001869 goto fail_wdts_open;
1870 }
1871 }
1872
1873 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001874 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301875 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 /*Send the context as a ptr to the global WDI Control Block*/
1877 *ppWDIGlobalCtx = &gWDICb;
1878
1879 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001880 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001881 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1882 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301883
1884 wdi_register_debug_callback();
1885
Jeff Johnson295189b2012-06-20 16:38:30 -07001886 return WDI_STATUS_SUCCESS;
1887
1888 /* ERROR handlers
1889 Undo everything that completed successfully */
1890
1891 fail_wdts_open:
1892 {
1893 wpt_status eventStatus;
1894
1895 /* Closing WCTS in this scenario is tricky since it has to close
1896 the SMD channel and then we get notified asynchronously when
1897 the channel has been closed. So we take some of the logic from
1898 the "normal" close procedure in WDI_Close()
1899 */
1900
1901 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001902 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001903 {
1904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001905 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001906 }
1907
1908 WCTS_CloseTransport(gWDICb.wctsHandle);
1909
1910 /* Wait for WCTS to close the control transport. If we were able
1911 to reset the event flag, then we'll wait for the event,
1912 otherwise we'll wait for a maximum amount of time required for
1913 the channel to be closed */
1914 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1915 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001916 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001917 WDI_WCTS_ACTION_TIMEOUT);
1918 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1919 {
1920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001921 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001922 }
1923 }
1924 else
1925 {
1926 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1927 }
1928 }
1929 fail_wcts_open:
1930 wpalEventDelete(&gWDICb.wctsActionEvent);
1931 fail_wcts_event:
1932 wpalEventDelete(&gWDICb.setPowerStateEvent);
1933 fail_power_event:
1934 WDI_DP_UtilsExit(&gWDICb);
1935 fail_dp_util_init:
1936 gWDICb.magic = 0;
1937 fail_bss_queue:
1938 /* entries 0 thru i-1 were successfully initialized */
1939 while (0 < i)
1940 {
1941 i--;
1942 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1943 }
1944 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1945 fail_assoc_queue:
1946 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1947 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001948 wpalTimerDelete(&gWDICb.ssrTimer);
1949 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001950 wpalTimerDelete(&gWDICb.wptResponseTimer);
1951 fail_timer:
1952 wpalMutexDelete(&gWDICb.wptMutex);
1953 fail_mutex:
1954 wpalClose(gWDICb.pPALContext);
1955 fail_wpalOpen:
1956 WDI_STATableClose(&gWDICb);
1957 fail_STATableInit:
1958 gWDIInitialized = eWLAN_PAL_FALSE;
1959
1960 return WDI_STATUS_E_FAILURE;
1961
1962}/*WDI_Init*/;
1963
1964/**
1965 @brief WDI_Start will be called when the upper MAC is ready to
1966 commence operation with the WLAN Device. Upon the call
1967 of this API the WLAN DAL will pack and send a HAL Start
1968 message to the lower RIVA sub-system if the SMD channel
1969 has been fully opened and the RIVA subsystem is up.
1970
1971 If the RIVA sub-system is not yet up and running DAL
1972 will queue the request for Open and will wait for the
1973 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001974 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001975
1976 WDI_Init must have been called.
1977
Jeff Johnsone7245742012-09-05 17:12:55 -07001978 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001979 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001980
Jeff Johnson295189b2012-06-20 16:38:30 -07001981 wdiStartRspCb: callback for passing back the response of
1982 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001983
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001985 callback
1986
Jeff Johnson295189b2012-06-20 16:38:30 -07001987 @see WDI_Start
1988 @return Result of the function call
1989*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001990WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001991WDI_Start
1992(
1993 WDI_StartReqParamsType* pwdiStartParams,
1994 WDI_StartRspCb wdiStartRspCb,
1995 void* pUserData
1996)
1997{
1998 WDI_EventInfoType wdiEventData;
1999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2000
2001 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002002 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 ------------------------------------------------------------------------*/
2004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2005 {
2006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2007 "WDI API call before module is initialized - Fail request");
2008
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 }
2011
2012 /*------------------------------------------------------------------------
2013 Fill in Event data and post to the Main FSM
2014 ------------------------------------------------------------------------*/
2015 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 wdiEventData.pEventData = pwdiStartParams;
2017 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
2018 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 wdiEventData.pUserData = pUserData;
2020
2021 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2022
2023}/*WDI_Start*/
2024
2025/**
2026 @brief WDI_Stop will be called when the upper MAC is ready to
2027 stop any operation with the WLAN Device. Upon the call
2028 of this API the WLAN DAL will pack and send a HAL Stop
2029 message to the lower RIVA sub-system if the DAL Core is
2030 in started state.
2031
2032 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07002033
2034 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002035
2036 WDI_Start must have been called.
2037
Jeff Johnsone7245742012-09-05 17:12:55 -07002038 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002039 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002040
Jeff Johnson295189b2012-06-20 16:38:30 -07002041 wdiStopRspCb: callback for passing back the response of
2042 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002043
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 callback
2046
Jeff Johnson295189b2012-06-20 16:38:30 -07002047 @see WDI_Start
2048 @return Result of the function call
2049*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002050WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002051WDI_Stop
2052(
2053 WDI_StopReqParamsType* pwdiStopParams,
2054 WDI_StopRspCb wdiStopRspCb,
2055 void* pUserData
2056)
2057{
2058 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002059 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2061
2062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002063 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002064 ------------------------------------------------------------------------*/
2065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2066 {
2067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2068 "WDI API call before module is initialized - Fail request");
2069
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 }
2072
Jeff Johnson43971f52012-07-17 12:26:56 -07002073 /*Access to the global state must be locked before cleaning */
2074 wpalMutexAcquire(&pWDICtx->wptMutex);
2075
2076 /*Clear all pending request*/
2077 WDI_ClearPendingRequests(pWDICtx);
2078
2079 /*We have completed cleaning unlock now*/
2080 wpalMutexRelease(&pWDICtx->wptMutex);
2081
Jeff Johnson295189b2012-06-20 16:38:30 -07002082 /* Free the global variables */
2083 wpalMemoryFree(gpHostWlanFeatCaps);
2084 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002085 gpHostWlanFeatCaps = NULL;
2086 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002087
2088 /*------------------------------------------------------------------------
2089 Fill in Event data and post to the Main FSM
2090 ------------------------------------------------------------------------*/
2091 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002092 wdiEventData.pEventData = pwdiStopParams;
2093 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2094 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 wdiEventData.pUserData = pUserData;
2096
2097 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2098
2099}/*WDI_Stop*/
2100
2101
2102
2103/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002104 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002105 needs to interact with DAL. DAL will free its control
2106 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002107
2108 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002109
2110 WDI_Stop must have been called.
2111
2112 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002113
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 @see WDI_Stop
2115 @return Result of the function call
2116*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002117WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002118WDI_Close
2119(
2120 void
2121)
2122{
2123 wpt_uint8 i;
2124 WDI_EventInfoType wdiEventData;
2125 wpt_status wptStatus;
2126 wpt_status eventStatus;
2127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2128
2129 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002130 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002131 ------------------------------------------------------------------------*/
2132 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2133 {
2134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2135 "WDI API call before module is initialized - Fail request");
2136
Jeff Johnsone7245742012-09-05 17:12:55 -07002137 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002138 }
2139
2140 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2141 (the control transport will be closed by the FSM and we'll want
2142 to wait until that completes)*/
2143 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002144 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 {
2146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002147 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002148 /* fall through and try to finish closing via the FSM */
2149 }
2150
2151 /*------------------------------------------------------------------------
2152 Fill in Event data and post to the Main FSM
2153 ------------------------------------------------------------------------*/
2154 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002155 wdiEventData.pEventData = NULL;
2156 wdiEventData.uEventDataSize = 0;
2157 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 wdiEventData.pUserData = NULL;
2159
2160 gWDIInitialized = eWLAN_PAL_FALSE;
2161
2162 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2163
2164 /*Wait for WCTS to close the control transport
2165 (but only if we were able to reset the event flag*/
2166 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2167 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002169 WDI_WCTS_ACTION_TIMEOUT);
2170 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2171 {
2172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002173 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002174 }
2175 }
2176
2177 /* Destroy the WCTS action event */
2178 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2179 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2180 {
2181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2182 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002183 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002184 }
2185
2186 /* Destroy the Set Power State event */
2187 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
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");
2192
Jeff Johnsone7245742012-09-05 17:12:55 -07002193 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002194 }
2195
2196 /*------------------------------------------------------------------------
2197 Closes the Data Path Utility Module
2198 ------------------------------------------------------------------------*/
2199 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2200 {
2201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2202 "WDI Init failed to close the DP Util Module");
2203
Jeff Johnsone7245742012-09-05 17:12:55 -07002204 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002205 }
2206
2207 /*destroy the BSS sessions pending Queue */
2208 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2209 {
2210 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2211 }
2212
2213 /* destroy the WDI Pending Assoc Id Request Queue*/
2214 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2215
2216 /* destroy the WDI Pending Request Queue*/
2217 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002218
Jeff Johnson295189b2012-06-20 16:38:30 -07002219 /*destroy the response timer */
2220 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2221
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002222 /*destroy the SSR timer */
2223 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2224
Jeff Johnson295189b2012-06-20 16:38:30 -07002225 /*invalidate the main synchro mutex */
2226 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2227 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2228 {
2229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2230 "Failed to delete mutex %d", wptStatus);
2231 WDI_ASSERT(0);
2232 }
2233
2234 /*Clear control block. note that this will clear the "magic"
2235 which will inhibit all asynchronous callbacks*/
2236 WDI_CleanCB(&gWDICb);
2237
2238 return wptStatus;
2239
2240}/*WDI_Close*/
2241
2242/**
2243 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2244 This will do most of the WDI stop & close
2245 operations without doing any handshake with Riva
2246
2247 This will also make sure that the control transport
2248 will NOT be closed.
2249
2250 This request will not be queued.
2251
2252
2253 WDI_Start must have been called.
2254
2255 @param closeTransport: Close control channel if this is set
2256
2257 @return Result of the function call
2258*/
2259WDI_Status
2260WDI_Shutdown
2261(
2262 wpt_boolean closeTransport
2263)
2264{
2265 WDI_EventInfoType wdiEventData;
2266 wpt_status wptStatus;
2267 int i = 0;
2268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2269
2270 /*------------------------------------------------------------------------
2271 Sanity Check
2272 ------------------------------------------------------------------------*/
2273 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2274 {
2275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2276 "WDI API call before module is initialized - Fail request");
2277
2278 return WDI_STATUS_E_NOT_ALLOWED;
2279 }
2280
2281 /*------------------------------------------------------------------------
2282 Fill in Event data and post to the Main FSM
2283 ------------------------------------------------------------------------*/
2284 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2285 wdiEventData.pEventData = NULL;
2286 wdiEventData.uEventDataSize = 0;
2287
2288 /* Shutdown will not be queued, if the state is busy timer will be
2289 * stopped & this message will be processed.*/
2290 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2291 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2292 {
2293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002294 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002295 }
2296 /* Destroy the Set Power State event */
2297 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2298 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2299 {
2300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2301 "WDI Close failed to destroy an event");
2302
2303 WDI_ASSERT(0);
2304 }
2305 /*------------------------------------------------------------------------
2306 Closes the Data Path Utility Module
2307 ------------------------------------------------------------------------*/
2308 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2309 {
2310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2311 "WDI Init failed to close the DP Util Module");
2312
2313 WDI_ASSERT(0);
2314 }
2315 if ( closeTransport )
2316 {
2317 /* Close control transport, called from module unload */
2318 WCTS_CloseTransport(gWDICb.wctsHandle);
2319 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002320 else
2321 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002322 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002323 the pending messages in the transport queue */
2324 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2325 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 /*destroy the BSS sessions pending Queue */
2327 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2328 {
2329 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2330 }
2331
2332 /* destroy the WDI Pending Assoc Id Request Queue*/
2333 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2334 /* destroy the WDI Pending Request Queue*/
2335 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2336 /*destroy the response timer */
2337 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002338 /*destroy the SSR timer */
2339 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002340
2341 /*invalidate the main synchro mutex */
2342 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2343 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2344 {
2345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002346 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 WDI_ASSERT(0);
2348 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002349 /* Free the global variables */
2350 wpalMemoryFree(gpHostWlanFeatCaps);
2351 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002352 gpHostWlanFeatCaps = NULL;
2353 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002354 /*Clear control block. note that this will clear the "magic"
2355 which will inhibit all asynchronous callbacks*/
2356 WDI_CleanCB(&gWDICb);
2357 return wptStatus;
2358
2359}/*WDI_Shutdown*/
2360
2361
Jeff Johnsone7245742012-09-05 17:12:55 -07002362/*========================================================================
2363
Jeff Johnson295189b2012-06-20 16:38:30 -07002364 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002365
Jeff Johnson295189b2012-06-20 16:38:30 -07002366==========================================================================*/
2367
2368/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002369 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 the WLAN Device to get ready for a scan procedure. Upon
2371 the call of this API the WLAN DAL will pack and send a
2372 HAL Init Scan request message to the lower RIVA
2373 sub-system if DAL is in state STARTED.
2374
2375 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002376 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002377
2378 WDI_Start must have been called.
2379
2380 @param wdiInitScanParams: the init scan parameters as specified
2381 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002382
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 wdiInitScanRspCb: callback for passing back the response
2384 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002385
Jeff Johnson295189b2012-06-20 16:38:30 -07002386 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002387 callback
2388
Jeff Johnson295189b2012-06-20 16:38:30 -07002389 @see WDI_Start
2390 @return Result of the function call
2391*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002392WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002393WDI_InitScanReq
2394(
2395 WDI_InitScanReqParamsType* pwdiInitScanParams,
2396 WDI_InitScanRspCb wdiInitScanRspCb,
2397 void* pUserData
2398)
2399{
2400 WDI_EventInfoType wdiEventData;
2401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2402
2403 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002404 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 ------------------------------------------------------------------------*/
2406 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2407 {
2408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2409 "WDI API call before module is initialized - Fail request");
2410
Jeff Johnsone7245742012-09-05 17:12:55 -07002411 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 }
2413
2414 /*------------------------------------------------------------------------
2415 Fill in Event data and post to the Main FSM
2416 ------------------------------------------------------------------------*/
2417 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002418 wdiEventData.pEventData = pwdiInitScanParams;
2419 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2420 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 wdiEventData.pUserData = pUserData;
2422
2423 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2424
2425}/*WDI_InitScanReq*/
2426
2427/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002428 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002429 wishes to change the Scan channel on the WLAN Device.
2430 Upon the call of this API the WLAN DAL will pack and
2431 send a HAL Start Scan request message to the lower RIVA
2432 sub-system if DAL is in state STARTED.
2433
2434 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002435 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002436
2437 WDI_InitScanReq must have been called.
2438
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002440 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002441
Jeff Johnson295189b2012-06-20 16:38:30 -07002442 wdiStartScanRspCb: callback for passing back the
2443 response of the start scan operation received from the
2444 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002445
Jeff Johnson295189b2012-06-20 16:38:30 -07002446 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 callback
2448
Jeff Johnson295189b2012-06-20 16:38:30 -07002449 @see WDI_InitScanReq
2450 @return Result of the function call
2451*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002452WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002453WDI_StartScanReq
2454(
2455 WDI_StartScanReqParamsType* pwdiStartScanParams,
2456 WDI_StartScanRspCb wdiStartScanRspCb,
2457 void* pUserData
2458)
2459{
2460 WDI_EventInfoType wdiEventData;
2461 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2462
2463 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002464 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 ------------------------------------------------------------------------*/
2466 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2467 {
2468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2469 "WDI API call before module is initialized - Fail request");
2470
Jeff Johnsone7245742012-09-05 17:12:55 -07002471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 }
2473
2474 /*------------------------------------------------------------------------
2475 Fill in Event data and post to the Main FSM
2476 ------------------------------------------------------------------------*/
2477 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 wdiEventData.pEventData = pwdiStartScanParams;
2479 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2480 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 wdiEventData.pUserData = pUserData;
2482
2483 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2484
2485}/*WDI_StartScanReq*/
2486
2487
2488/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002489 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 wants to end scanning for a particular channel that it
2491 had set before by calling Scan Start on the WLAN Device.
2492 Upon the call of this API the WLAN DAL will pack and
2493 send a HAL End Scan request message to the lower RIVA
2494 sub-system if DAL is in state STARTED.
2495
2496 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002498
2499 WDI_StartScanReq must have been called.
2500
Jeff Johnsone7245742012-09-05 17:12:55 -07002501 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002502 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002503
Jeff Johnson295189b2012-06-20 16:38:30 -07002504 wdiEndScanRspCb: callback for passing back the response
2505 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002506
Jeff Johnson295189b2012-06-20 16:38:30 -07002507 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 callback
2509
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 @see WDI_StartScanReq
2511 @return Result of the function call
2512*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002513WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002514WDI_EndScanReq
2515(
2516 WDI_EndScanReqParamsType* pwdiEndScanParams,
2517 WDI_EndScanRspCb wdiEndScanRspCb,
2518 void* pUserData
2519)
2520{
2521 WDI_EventInfoType wdiEventData;
2522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2523
2524 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002525 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002526 ------------------------------------------------------------------------*/
2527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2528 {
2529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2530 "WDI API call before module is initialized - Fail request");
2531
Jeff Johnsone7245742012-09-05 17:12:55 -07002532 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 }
2534
2535 /*------------------------------------------------------------------------
2536 Fill in Event data and post to the Main FSM
2537 ------------------------------------------------------------------------*/
2538 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 wdiEventData.pEventData = pwdiEndScanParams;
2540 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2541 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 wdiEventData.pUserData = pUserData;
2543
2544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2545
2546}/*WDI_EndScanReq*/
2547
2548
2549/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002550 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 completed the scan process on the WLAN Device. Upon the
2552 call of this API the WLAN DAL will pack and send a HAL
2553 Finish Scan Request request message to the lower RIVA
2554 sub-system if DAL is in state STARTED.
2555
2556 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002557 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002558
2559 WDI_InitScanReq must have been called.
2560
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002563
Jeff Johnson295189b2012-06-20 16:38:30 -07002564 wdiFinishScanRspCb: callback for passing back the
2565 response of the finish scan operation received from the
2566 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002567
Jeff Johnson295189b2012-06-20 16:38:30 -07002568 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 callback
2570
Jeff Johnson295189b2012-06-20 16:38:30 -07002571 @see WDI_InitScanReq
2572 @return Result of the function call
2573*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002574WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002575WDI_FinishScanReq
2576(
2577 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2578 WDI_FinishScanRspCb wdiFinishScanRspCb,
2579 void* pUserData
2580)
2581{
2582 WDI_EventInfoType wdiEventData;
2583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2584
2585 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002586 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002587 ------------------------------------------------------------------------*/
2588 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2589 {
2590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2591 "WDI API call before module is initialized - Fail request");
2592
Jeff Johnsone7245742012-09-05 17:12:55 -07002593 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 }
2595
2596 /*------------------------------------------------------------------------
2597 Fill in Event data and post to the Main FSM
2598 ------------------------------------------------------------------------*/
2599 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002600 wdiEventData.pEventData = pwdiFinishScanParams;
2601 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2602 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 wdiEventData.pUserData = pUserData;
2604
2605 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2606
2607}/*WDI_FinishScanReq*/
2608
Jeff Johnsone7245742012-09-05 17:12:55 -07002609/*========================================================================
2610
Jeff Johnson295189b2012-06-20 16:38:30 -07002611 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002612
Jeff Johnson295189b2012-06-20 16:38:30 -07002613==========================================================================*/
2614
2615/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 to start an association procedure to a BSS. Upon the
2618 call of this API the WLAN DAL will pack and send a HAL
2619 Join request message to the lower RIVA sub-system if
2620 DAL is in state STARTED.
2621
2622 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002624
2625 WDI_Start must have been called.
2626
Jeff Johnsone7245742012-09-05 17:12:55 -07002627 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002628 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002629
Jeff Johnson295189b2012-06-20 16:38:30 -07002630 wdiJoinRspCb: callback for passing back the response of
2631 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002632
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 callback
2635
Jeff Johnson295189b2012-06-20 16:38:30 -07002636 @see WDI_Start
2637 @return Result of the function call
2638*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002640WDI_JoinReq
2641(
2642 WDI_JoinReqParamsType* pwdiJoinParams,
2643 WDI_JoinRspCb wdiJoinRspCb,
2644 void* pUserData
2645)
2646{
2647 WDI_EventInfoType wdiEventData;
2648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2649
2650 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 ------------------------------------------------------------------------*/
2653 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2654 {
2655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2656 "WDI API call before module is initialized - Fail request");
2657
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 }
2660
2661 /*------------------------------------------------------------------------
2662 Fill in Event data and post to the Main FSM
2663 ------------------------------------------------------------------------*/
2664 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002665 wdiEventData.pEventData = pwdiJoinParams;
2666 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2667 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 wdiEventData.pUserData = pUserData;
2669
2670 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2671
2672}/*WDI_JoinReq*/
2673
2674/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002675 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002676 wishes to configure the newly acquired or in process of
2677 being acquired BSS to the HW . Upon the call of this API
2678 the WLAN DAL will pack and send a HAL Config BSS request
2679 message to the lower RIVA sub-system if DAL is in state
2680 STARTED.
2681
2682 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002683 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002684
2685 WDI_JoinReq must have been called.
2686
Jeff Johnsone7245742012-09-05 17:12:55 -07002687 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002688 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002689
Jeff Johnson295189b2012-06-20 16:38:30 -07002690 wdiConfigBSSRspCb: callback for passing back the
2691 response of the config BSS operation received from the
2692 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002693
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002695 callback
2696
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 @see WDI_JoinReq
2698 @return Result of the function call
2699*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002700WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002701WDI_ConfigBSSReq
2702(
2703 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2704 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2705 void* pUserData
2706)
2707{
2708 WDI_EventInfoType wdiEventData;
2709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2710
2711 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002712 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 ------------------------------------------------------------------------*/
2714 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2715 {
2716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2717 "WDI API call before module is initialized - Fail request");
2718
Jeff Johnsone7245742012-09-05 17:12:55 -07002719 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002720 }
2721
2722 /*------------------------------------------------------------------------
2723 Fill in Event data and post to the Main FSM
2724 ------------------------------------------------------------------------*/
2725 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002726 wdiEventData.pEventData = pwdiConfigBSSParams;
2727 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2728 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 wdiEventData.pUserData = pUserData;
2730
2731 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2732
2733}/*WDI_ConfigBSSReq*/
2734
2735/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002736 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002737 disassociating from the BSS and wishes to notify HW.
2738 Upon the call of this API the WLAN DAL will pack and
2739 send a HAL Del BSS request message to the lower RIVA
2740 sub-system if DAL is in state STARTED.
2741
2742 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002743 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002744
2745 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2746
Jeff Johnsone7245742012-09-05 17:12:55 -07002747 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002748 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002749
Jeff Johnson295189b2012-06-20 16:38:30 -07002750 wdiDelBSSRspCb: callback for passing back the response
2751 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002752
Jeff Johnson295189b2012-06-20 16:38:30 -07002753 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002754 callback
2755
2756 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 @return Result of the function call
2758*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002759WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002760WDI_DelBSSReq
2761(
2762 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2763 WDI_DelBSSRspCb wdiDelBSSRspCb,
2764 void* pUserData
2765)
2766{
2767 WDI_EventInfoType wdiEventData;
2768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2769
2770 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002771 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002772 ------------------------------------------------------------------------*/
2773 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2774 {
2775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2776 "WDI API call before module is initialized - Fail request");
2777
Jeff Johnsone7245742012-09-05 17:12:55 -07002778 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002779 }
2780
2781 /*------------------------------------------------------------------------
2782 Fill in Event data and post to the Main FSM
2783 ------------------------------------------------------------------------*/
2784 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002785 wdiEventData.pEventData = pwdiDelBSSParams;
2786 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2787 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002788 wdiEventData.pUserData = pUserData;
2789
2790 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2791
2792}/*WDI_DelBSSReq*/
2793
2794/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002795 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 associated to a BSS and wishes to configure HW for
2797 associated state. Upon the call of this API the WLAN DAL
2798 will pack and send a HAL Post Assoc request message to
2799 the lower RIVA sub-system if DAL is in state STARTED.
2800
2801 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002803
2804 WDI_JoinReq must have been called.
2805
2806 @param wdiPostAssocReqParams: the assoc parameters as specified
2807 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002808
Jeff Johnson295189b2012-06-20 16:38:30 -07002809 wdiPostAssocRspCb: callback for passing back the
2810 response of the post assoc operation received from the
2811 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002812
Jeff Johnson295189b2012-06-20 16:38:30 -07002813 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 callback
2815
Jeff Johnson295189b2012-06-20 16:38:30 -07002816 @see WDI_JoinReq
2817 @return Result of the function call
2818*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002819WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002820WDI_PostAssocReq
2821(
2822 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2823 WDI_PostAssocRspCb wdiPostAssocRspCb,
2824 void* pUserData
2825)
2826{
2827 WDI_EventInfoType wdiEventData;
2828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2829
2830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002831 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 ------------------------------------------------------------------------*/
2833 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2834 {
2835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2836 "WDI API call before module is initialized - Fail request");
2837
Jeff Johnsone7245742012-09-05 17:12:55 -07002838 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002839 }
2840
2841 /*------------------------------------------------------------------------
2842 Fill in Event data and post to the Main FSM
2843 ------------------------------------------------------------------------*/
2844 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 wdiEventData.pEventData = pwdiPostAssocReqParams;
2846 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2847 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 wdiEventData.pUserData = pUserData;
2849
2850 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2851
2852}/*WDI_PostAssocReq*/
2853
2854/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002855 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002856 association with another STA has ended and the station
2857 must be deleted from HW. Upon the call of this API the
2858 WLAN DAL will pack and send a HAL Del STA request
2859 message to the lower RIVA sub-system if DAL is in state
2860 STARTED.
2861
2862 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002863 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002864
2865 WDI_PostAssocReq must have been called.
2866
Jeff Johnsone7245742012-09-05 17:12:55 -07002867 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002868 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002869
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 wdiDelSTARspCb: callback for passing back the response
2871 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002872
Jeff Johnson295189b2012-06-20 16:38:30 -07002873 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002874 callback
2875
Jeff Johnson295189b2012-06-20 16:38:30 -07002876 @see WDI_PostAssocReq
2877 @return Result of the function call
2878*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002879WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002880WDI_DelSTAReq
2881(
2882 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2883 WDI_DelSTARspCb wdiDelSTARspCb,
2884 void* pUserData
2885)
2886{
2887 WDI_EventInfoType wdiEventData;
2888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2889
2890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002892 ------------------------------------------------------------------------*/
2893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2894 {
2895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2896 "WDI API call before module is initialized - Fail request");
2897
Jeff Johnsone7245742012-09-05 17:12:55 -07002898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002899 }
2900
2901 /*------------------------------------------------------------------------
2902 Fill in Event data and post to the Main FSM
2903 ------------------------------------------------------------------------*/
2904 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002905 wdiEventData.pEventData = pwdiDelSTAParams;
2906 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2907 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002908 wdiEventData.pUserData = pUserData;
2909
2910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2911
2912}/*WDI_DelSTAReq*/
2913
Jeff Johnsone7245742012-09-05 17:12:55 -07002914/*========================================================================
2915
Jeff Johnson295189b2012-06-20 16:38:30 -07002916 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002917
Jeff Johnson295189b2012-06-20 16:38:30 -07002918==========================================================================*/
2919
2920/**
2921 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2922 install a BSS encryption key on the HW. Upon the call of this
2923 API the WLAN DAL will pack and send a Set BSS Key request
2924 message to the lower RIVA sub-system if DAL is in state
2925 STARTED.
2926
2927 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002928 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002929
2930 WDI_PostAssocReq must have been called.
2931
Jeff Johnsone7245742012-09-05 17:12:55 -07002932 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002933 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002934
Jeff Johnson295189b2012-06-20 16:38:30 -07002935 wdiSetBSSKeyRspCb: callback for passing back the
2936 response of the set BSS Key operation received from the
2937 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002938
Jeff Johnson295189b2012-06-20 16:38:30 -07002939 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002940 callback
2941
Jeff Johnson295189b2012-06-20 16:38:30 -07002942 @see WDI_PostAssocReq
2943 @return Result of the function call
2944*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002945WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002946WDI_SetBSSKeyReq
2947(
2948 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2949 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2950 void* pUserData
2951)
2952{
2953 WDI_EventInfoType wdiEventData;
2954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2955
2956 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002957 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 ------------------------------------------------------------------------*/
2959 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2960 {
2961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2962 "WDI API call before module is initialized - Fail request");
2963
Jeff Johnsone7245742012-09-05 17:12:55 -07002964 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 }
2966
2967 /*------------------------------------------------------------------------
2968 Fill in Event data and post to the Main FSM
2969 ------------------------------------------------------------------------*/
2970 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002971 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2972 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2973 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 wdiEventData.pUserData = pUserData;
2975
2976 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2977
2978}/*WDI_SetBSSKeyReq*/
2979
2980/**
2981 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2982 uninstall a BSS key from HW. Upon the call of this API the
2983 WLAN DAL will pack and send a HAL Remove BSS Key request
2984 message to the lower RIVA sub-system if DAL is in state
2985 STARTED.
2986
2987 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002988 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002989
2990 WDI_SetBSSKeyReq must have been called.
2991
Jeff Johnsone7245742012-09-05 17:12:55 -07002992 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002993 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002994
Jeff Johnson295189b2012-06-20 16:38:30 -07002995 wdiRemoveBSSKeyRspCb: callback for passing back the
2996 response of the remove BSS key operation received from
2997 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002998
Jeff Johnson295189b2012-06-20 16:38:30 -07002999 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003000 callback
3001
Jeff Johnson295189b2012-06-20 16:38:30 -07003002 @see WDI_SetBSSKeyReq
3003 @return Result of the function call
3004*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003005WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003006WDI_RemoveBSSKeyReq
3007(
3008 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
3009 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
3010 void* pUserData
3011)
3012{
3013 WDI_EventInfoType wdiEventData;
3014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3015
3016 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003017 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 ------------------------------------------------------------------------*/
3019 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3020 {
3021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3022 "WDI API call before module is initialized - Fail request");
3023
Jeff Johnsone7245742012-09-05 17:12:55 -07003024 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003025 }
3026
3027 /*------------------------------------------------------------------------
3028 Fill in Event data and post to the Main FSM
3029 ------------------------------------------------------------------------*/
3030 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003031 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
3032 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
3033 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003034 wdiEventData.pUserData = pUserData;
3035
3036 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3037
3038}/*WDI_RemoveBSSKeyReq*/
3039
3040
3041/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003042 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003043 ready to install a STA(ast) encryption key in HW. Upon
3044 the call of this API the WLAN DAL will pack and send a
3045 HAL Set STA Key request message to the lower RIVA
3046 sub-system if DAL is in state STARTED.
3047
3048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003050
3051 WDI_PostAssocReq must have been called.
3052
Jeff Johnsone7245742012-09-05 17:12:55 -07003053 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003054 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003055
Jeff Johnson295189b2012-06-20 16:38:30 -07003056 wdiSetSTAKeyRspCb: callback for passing back the
3057 response of the set STA key operation received from the
3058 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003059
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 callback
3062
Jeff Johnson295189b2012-06-20 16:38:30 -07003063 @see WDI_PostAssocReq
3064 @return Result of the function call
3065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003067WDI_SetSTAKeyReq
3068(
3069 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3070 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3071 void* pUserData
3072)
3073{
3074 WDI_EventInfoType wdiEventData;
3075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3076
3077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 ------------------------------------------------------------------------*/
3080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3081 {
3082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3083 "WDI API call before module is initialized - Fail request");
3084
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 }
3087
3088 /*------------------------------------------------------------------------
3089 Fill in Event data and post to the Main FSM
3090 ------------------------------------------------------------------------*/
3091 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003092 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3093 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3094 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 wdiEventData.pUserData = pUserData;
3096
3097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3098
3099}/*WDI_SetSTAKeyReq*/
3100
3101
3102/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003103 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 wants to uninstall a previously set STA key in HW. Upon
3105 the call of this API the WLAN DAL will pack and send a
3106 HAL Remove STA Key request message to the lower RIVA
3107 sub-system if DAL is in state STARTED.
3108
3109 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003111
3112 WDI_SetSTAKeyReq must have been called.
3113
Jeff Johnsone7245742012-09-05 17:12:55 -07003114 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003115 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003116
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 wdiRemoveSTAKeyRspCb: callback for passing back the
3118 response of the remove STA key operation received from
3119 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003120
Jeff Johnson295189b2012-06-20 16:38:30 -07003121 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003122 callback
3123
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 @see WDI_SetSTAKeyReq
3125 @return Result of the function call
3126*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003127WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003128WDI_RemoveSTAKeyReq
3129(
3130 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3131 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3132 void* pUserData
3133)
3134{
3135 WDI_EventInfoType wdiEventData;
3136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3137
3138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003139 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003140 ------------------------------------------------------------------------*/
3141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3142 {
3143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3144 "WDI API call before module is initialized - Fail request");
3145
Jeff Johnsone7245742012-09-05 17:12:55 -07003146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003147 }
3148
3149 /*------------------------------------------------------------------------
3150 Fill in Event data and post to the Main FSM
3151 ------------------------------------------------------------------------*/
3152 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003153 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3154 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3155 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003156 wdiEventData.pUserData = pUserData;
3157
3158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3159
3160}/*WDI_RemoveSTAKeyReq*/
3161
3162
3163/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003164 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 wants to install a STA Bcast encryption key on the HW.
3166 Upon the call of this API the WLAN DAL will pack and
3167 send a HAL Start request message to the lower RIVA
3168 sub-system if DAL is in state STARTED.
3169
3170 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003171 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003172
3173 WDI_PostAssocReq must have been called.
3174
Jeff Johnsone7245742012-09-05 17:12:55 -07003175 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003176 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003177
Jeff Johnson295189b2012-06-20 16:38:30 -07003178 wdiSetSTABcastKeyRspCb: callback for passing back the
3179 response of the set BSS Key operation received from the
3180 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003181
Jeff Johnson295189b2012-06-20 16:38:30 -07003182 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 callback
3184
Jeff Johnson295189b2012-06-20 16:38:30 -07003185 @see WDI_PostAssocReq
3186 @return Result of the function call
3187*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003189WDI_SetSTABcastKeyReq
3190(
3191 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3192 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3193 void* pUserData
3194)
3195
3196{
3197 WDI_EventInfoType wdiEventData;
3198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3199
3200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 ------------------------------------------------------------------------*/
3203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3204 {
3205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3206 "WDI API call before module is initialized - Fail request");
3207
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 }
3210
3211 /*------------------------------------------------------------------------
3212 Fill in Event data and post to the Main FSM
3213 ------------------------------------------------------------------------*/
3214 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003215 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3216 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3217 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 wdiEventData.pUserData = pUserData;
3219
3220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3221
3222}/*WDI_SetSTABcastKeyReq*/
3223
3224/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003225 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003226 MAC wants to uninstall a STA Bcast key from HW. Upon the
3227 call of this API the WLAN DAL will pack and send a HAL
3228 Remove STA Bcast Key request message to the lower RIVA
3229 sub-system if DAL is in state STARTED.
3230
3231 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003232 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003233
3234 WDI_SetSTABcastKeyReq must have been called.
3235
Jeff Johnsone7245742012-09-05 17:12:55 -07003236 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 parameters as specified by the Device
3238 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003239
Jeff Johnson295189b2012-06-20 16:38:30 -07003240 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3241 response of the remove STA Bcast key operation received
3242 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003243
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003245 callback
3246
Jeff Johnson295189b2012-06-20 16:38:30 -07003247 @see WDI_SetSTABcastKeyReq
3248 @return Result of the function call
3249*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003250WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003251WDI_RemoveSTABcastKeyReq
3252(
3253 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3254 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3255 void* pUserData
3256)
3257{
3258 WDI_EventInfoType wdiEventData;
3259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3260
3261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003262 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003263 ------------------------------------------------------------------------*/
3264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3265 {
3266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3267 "WDI API call before module is initialized - Fail request");
3268
Jeff Johnsone7245742012-09-05 17:12:55 -07003269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003270 }
3271
3272 /*------------------------------------------------------------------------
3273 Fill in Event data and post to the Main FSM
3274 ------------------------------------------------------------------------*/
3275 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003276 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3277 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3278 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003279 wdiEventData.pUserData = pUserData;
3280
3281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3282
3283}/*WDI_RemoveSTABcastKeyReq*/
3284
3285/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003286 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003287 MAC wants to set Max Tx Power to HW. Upon the
3288 call of this API the WLAN DAL will pack and send a HAL
3289 Remove STA Bcast Key request message to the lower RIVA
3290 sub-system if DAL is in state STARTED.
3291
3292 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003293 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003294
3295 WDI_SetSTABcastKeyReq must have been called.
3296
Jeff Johnsone7245742012-09-05 17:12:55 -07003297 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003298 parameters as specified by the Device
3299 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003300
Jeff Johnson295189b2012-06-20 16:38:30 -07003301 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3302 response of the remove STA Bcast key operation received
3303 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003304
Jeff Johnson295189b2012-06-20 16:38:30 -07003305 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 callback
3307
Jeff Johnson295189b2012-06-20 16:38:30 -07003308 @see WDI_SetMaxTxPowerReq
3309 @return Result of the function call
3310*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003311WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003312WDI_SetMaxTxPowerReq
3313(
3314 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3315 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3316 void* pUserData
3317)
3318{
3319 WDI_EventInfoType wdiEventData;
3320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3321
3322 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003323 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003324 ------------------------------------------------------------------------*/
3325 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3326 {
3327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3328 "WDI API call before module is initialized - Fail request");
3329
Jeff Johnsone7245742012-09-05 17:12:55 -07003330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003331 }
3332
3333 /*------------------------------------------------------------------------
3334 Fill in Event data and post to the Main FSM
3335 ------------------------------------------------------------------------*/
3336 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003337 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3338 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3339 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003340 wdiEventData.pUserData = pUserData;
3341
3342 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3343}
3344
schang86c22c42013-03-13 18:41:24 -07003345/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003346 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3347 MAC wants to set Max Tx Power to HW for specific band.
3348
3349 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3350
3351 wdiReqStatusCb: callback for passing back the
3352 response msg from the device
3353
3354 pUserData: user data will be passed back with the
3355 callback
3356
3357 @see WDI_SetMaxTxPowerPerBandReq
3358 @return Result of the function call
3359*/
3360WDI_Status
3361WDI_SetMaxTxPowerPerBandReq
3362(
3363 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3364 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3365 void* pUserData
3366)
3367{
3368 WDI_EventInfoType wdiEventData;
3369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3370
3371 /*------------------------------------------------------------------------
3372 Sanity Check
3373 ------------------------------------------------------------------------*/
3374 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3375 {
3376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3377 "WDI API call before module is initialized - Fail request");
3378
3379 return WDI_STATUS_E_NOT_ALLOWED;
3380 }
3381
3382 /*------------------------------------------------------------------------
3383 Fill in Event data and post to the Main FSM
3384 ------------------------------------------------------------------------*/
3385 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3386 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3387 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3388 wdiEventData.pCBfnc = wdiReqStatusCb;
3389 wdiEventData.pUserData = pUserData;
3390
3391 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3392}
3393
3394/**
schang86c22c42013-03-13 18:41:24 -07003395 @brief WDI_SetTxPowerReq will be called when the upper
3396 MAC wants to set Tx Power to HW.
3397 In state BUSY this request will be queued. Request won't
3398 be allowed in any other state.
3399
3400
3401 @param pwdiSetTxPowerParams: set TS Power parameters
3402 BSSID and target TX Power with dbm included
3403
3404 wdiReqStatusCb: callback for passing back the response
3405
3406 pUserData: user data will be passed back with the
3407 callback
3408
3409 @return Result of the function call
3410*/
3411WDI_Status
3412WDI_SetTxPowerReq
3413(
3414 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3415 WDA_SetTxPowerRspCb wdiReqStatusCb,
3416 void* pUserData
3417)
3418{
3419 WDI_EventInfoType wdiEventData;
3420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3421
3422 /*------------------------------------------------------------------------
3423 Sanity Check
3424 ------------------------------------------------------------------------*/
3425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3426 {
3427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3428 "WDI API call before module is initialized - Fail request");
3429
3430 return WDI_STATUS_E_NOT_ALLOWED;
3431 }
3432
3433 /*------------------------------------------------------------------------
3434 Fill in Event data and post to the Main FSM
3435 ------------------------------------------------------------------------*/
3436 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3437 wdiEventData.pEventData = pwdiSetTxPowerParams;
3438 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3439 wdiEventData.pCBfnc = wdiReqStatusCb;
3440 wdiEventData.pUserData = pUserData;
3441
3442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3443}
3444
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003445#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003446WDI_Status
3447WDI_TSMStatsReq
3448(
3449 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3450 WDI_TsmRspCb wdiReqStatusCb,
3451 void* pUserData
3452)
3453{
3454 WDI_EventInfoType wdiEventData;
3455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003456 /*------------------------------------------------------------------------
3457 Sanity Check
3458 ------------------------------------------------------------------------*/
3459 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3460 {
3461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3462 "WDI API call before module is initialized - Fail request");
3463
3464 return WDI_STATUS_E_NOT_ALLOWED;
3465 }
3466
3467 /*------------------------------------------------------------------------
3468 Fill in Event data and post to the Main FSM
3469 ------------------------------------------------------------------------*/
3470 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3471 wdiEventData.pEventData = pwdiTsmReqParams;
3472 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3473 wdiEventData.pCBfnc = wdiReqStatusCb;
3474 wdiEventData.pUserData = pUserData;
3475
3476 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3477
3478}
3479#endif
3480
3481/*========================================================================
3482
3483 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003484
Jeff Johnson295189b2012-06-20 16:38:30 -07003485==========================================================================*/
3486
3487/**
3488 @brief WDI_AddTSReq will be called when the upper MAC to inform
3489 the device of a successful add TSpec negotiation. HW
3490 needs to receive the TSpec Info from the UMAC in order
3491 to configure properly the QoS data traffic. Upon the
3492 call of this API the WLAN DAL will pack and send a HAL
3493 Add TS request message to the lower RIVA sub-system if
3494 DAL is in state STARTED.
3495
3496 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003497 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003498
3499 WDI_PostAssocReq must have been called.
3500
3501 @param wdiAddTsReqParams: the add TS parameters as specified by
3502 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003503
Jeff Johnson295189b2012-06-20 16:38:30 -07003504 wdiAddTsRspCb: callback for passing back the response of
3505 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003506
Jeff Johnson295189b2012-06-20 16:38:30 -07003507 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 callback
3509
Jeff Johnson295189b2012-06-20 16:38:30 -07003510 @see WDI_PostAssocReq
3511 @return Result of the function call
3512*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003513WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003514WDI_AddTSReq
3515(
3516 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3517 WDI_AddTsRspCb wdiAddTsRspCb,
3518 void* pUserData
3519)
3520{
3521 WDI_EventInfoType wdiEventData;
3522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3523
3524 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003526 ------------------------------------------------------------------------*/
3527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3528 {
3529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3530 "WDI API call before module is initialized - Fail request");
3531
Jeff Johnsone7245742012-09-05 17:12:55 -07003532 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 }
3534
3535 /*------------------------------------------------------------------------
3536 Fill in Event data and post to the Main FSM
3537 ------------------------------------------------------------------------*/
3538 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003539 wdiEventData.pEventData = pwdiAddTsReqParams;
3540 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3541 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 wdiEventData.pUserData = pUserData;
3543
3544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3545
3546}/*WDI_AddTSReq*/
3547
3548
3549
3550/**
3551 @brief WDI_DelTSReq will be called when the upper MAC has ended
3552 admission on a specific AC. This is to inform HW that
3553 QoS traffic parameters must be rest. Upon the call of
3554 this API the WLAN DAL will pack and send a HAL Del TS
3555 request message to the lower RIVA sub-system if DAL is
3556 in state STARTED.
3557
3558 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003560
3561 WDI_AddTSReq must have been called.
3562
3563 @param wdiDelTsReqParams: the del TS parameters as specified by
3564 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003565
Jeff Johnson295189b2012-06-20 16:38:30 -07003566 wdiDelTsRspCb: callback for passing back the response of
3567 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003568
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003570 callback
3571
Jeff Johnson295189b2012-06-20 16:38:30 -07003572 @see WDI_AddTSReq
3573 @return Result of the function call
3574*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003575WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003576WDI_DelTSReq
3577(
3578 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3579 WDI_DelTsRspCb wdiDelTsRspCb,
3580 void* pUserData
3581)
3582{
3583 WDI_EventInfoType wdiEventData;
3584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3585
3586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003588 ------------------------------------------------------------------------*/
3589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3590 {
3591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3592 "WDI API call before module is initialized - Fail request");
3593
Jeff Johnsone7245742012-09-05 17:12:55 -07003594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 }
3596
3597 /*------------------------------------------------------------------------
3598 Fill in Event data and post to the Main FSM
3599 ------------------------------------------------------------------------*/
3600 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003601 wdiEventData.pEventData = pwdiDelTsReqParams;
3602 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3603 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 wdiEventData.pUserData = pUserData;
3605
3606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3607
3608}/*WDI_DelTSReq*/
3609
3610
3611
3612/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003613 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003614 wishes to update the EDCA parameters used by HW for QoS
3615 data traffic. Upon the call of this API the WLAN DAL
3616 will pack and send a HAL Update EDCA Params request
3617 message to the lower RIVA sub-system if DAL is in state
3618 STARTED.
3619
3620 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003622
3623 WDI_PostAssocReq must have been called.
3624
Jeff Johnsone7245742012-09-05 17:12:55 -07003625 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003626 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003627
Jeff Johnson295189b2012-06-20 16:38:30 -07003628 wdiUpdateEDCAParamsRspCb: callback for passing back the
3629 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003630
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003632 callback
3633
Jeff Johnson295189b2012-06-20 16:38:30 -07003634 @see WDI_PostAssocReq
3635 @return Result of the function call
3636*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003637WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003638WDI_UpdateEDCAParams
3639(
3640 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3641 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3642 void* pUserData
3643)
3644{
3645 WDI_EventInfoType wdiEventData;
3646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3647
3648 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003649 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003650 ------------------------------------------------------------------------*/
3651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3652 {
3653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3654 "WDI API call before module is initialized - Fail request");
3655
Jeff Johnsone7245742012-09-05 17:12:55 -07003656 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003657 }
3658
3659 /*------------------------------------------------------------------------
3660 Fill in Event data and post to the Main FSM
3661 ------------------------------------------------------------------------*/
3662 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003663 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3664 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3665 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 wdiEventData.pUserData = pUserData;
3667
3668 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3669
3670}/*WDI_UpdateEDCAParams*/
3671
3672
3673/**
3674 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3675 successfully a BA session and needs to notify the HW for
3676 the appropriate settings to take place. Upon the call of
3677 this API the WLAN DAL will pack and send a HAL Add BA
3678 request message to the lower RIVA sub-system if DAL is
3679 in state STARTED.
3680
3681 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003682 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003683
3684 WDI_PostAssocReq must have been called.
3685
3686 @param wdiAddBAReqParams: the add BA parameters as specified by
3687 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003688
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 wdiAddBARspCb: callback for passing back the response of
3690 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003691
Jeff Johnson295189b2012-06-20 16:38:30 -07003692 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 callback
3694
Jeff Johnson295189b2012-06-20 16:38:30 -07003695 @see WDI_PostAssocReq
3696 @return Result of the function call
3697*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003698WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003699WDI_AddBASessionReq
3700(
3701 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3702 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3703 void* pUserData
3704)
3705{
3706 WDI_EventInfoType wdiEventData;
3707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3708
3709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003711 ------------------------------------------------------------------------*/
3712 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3713 {
3714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3715 "WDI API call before module is initialized - Fail request");
3716
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 }
3719
3720 /*------------------------------------------------------------------------
3721 Fill in Event data and post to the Main FSM
3722 ------------------------------------------------------------------------*/
3723 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3725 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3726 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 wdiEventData.pUserData = pUserData;
3728
3729 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3730
3731}/*WDI_AddBASessionReq*/
3732
3733/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003734 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003735 inform HW that it has deleted a previously created BA
3736 session. Upon the call of this API the WLAN DAL will
3737 pack and send a HAL Del BA request message to the lower
3738 RIVA sub-system if DAL is in state STARTED.
3739
3740 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003741 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003742
3743 WDI_AddBAReq must have been called.
3744
3745 @param wdiDelBAReqParams: the del BA parameters as specified by
3746 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003747
Jeff Johnson295189b2012-06-20 16:38:30 -07003748 wdiDelBARspCb: callback for passing back the response of
3749 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003750
Jeff Johnson295189b2012-06-20 16:38:30 -07003751 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 callback
3753
Jeff Johnson295189b2012-06-20 16:38:30 -07003754 @see WDI_AddBAReq
3755 @return Result of the function call
3756*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003757WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003758WDI_DelBAReq
3759(
3760 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3761 WDI_DelBARspCb wdiDelBARspCb,
3762 void* pUserData
3763)
3764{
3765 WDI_EventInfoType wdiEventData;
3766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3767
3768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003769 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003770 ------------------------------------------------------------------------*/
3771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3772 {
3773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3774 "WDI API call before module is initialized - Fail request");
3775
Jeff Johnsone7245742012-09-05 17:12:55 -07003776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003777 }
3778
3779 /*------------------------------------------------------------------------
3780 Fill in Event data and post to the Main FSM
3781 ------------------------------------------------------------------------*/
3782 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003783 wdiEventData.pEventData = pwdiDelBAReqParams;
3784 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3785 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003786 wdiEventData.pUserData = pUserData;
3787
3788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3789
3790}/*WDI_DelBAReq*/
3791
Jeff Johnsone7245742012-09-05 17:12:55 -07003792/*========================================================================
3793
Jeff Johnson295189b2012-06-20 16:38:30 -07003794 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003795
Jeff Johnson295189b2012-06-20 16:38:30 -07003796==========================================================================*/
3797
3798/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 wants to set the power save related configurations of
3801 the WLAN Device. Upon the call of this API the WLAN DAL
3802 will pack and send a HAL Update CFG request message to
3803 the lower RIVA sub-system if DAL is in state STARTED.
3804
3805 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003807
3808 WDI_Start must have been called.
3809
Jeff Johnsone7245742012-09-05 17:12:55 -07003810 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003811 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003812
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 wdiSetPwrSaveCfgCb: callback for passing back the
3814 response of the set power save cfg operation received
3815 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003816
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003818 callback
3819
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003821 @return Result of the function call
3822*/
3823WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003824WDI_SetPwrSaveCfgReq
3825(
3826 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3827 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3828 void* pUserData
3829)
3830{
3831 WDI_EventInfoType wdiEventData;
3832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3833
3834 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003835 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 ------------------------------------------------------------------------*/
3837 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3838 {
3839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3840 "WDI API call before module is initialized - Fail request");
3841
Jeff Johnsone7245742012-09-05 17:12:55 -07003842 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003843 }
3844
3845 /*------------------------------------------------------------------------
3846 Fill in Event data and post to the Main FSM
3847 ------------------------------------------------------------------------*/
3848 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003849 wdiEventData.pEventData = pwdiPowerSaveCfg;
3850 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3851 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 wdiEventData.pUserData = pUserData;
3853
3854 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3855
3856}/*WDI_SetPwrSaveCfgReq*/
3857
3858/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003860 request the device to get into IMPS power state. Upon
3861 the call of this API the WLAN DAL will send a HAL Enter
3862 IMPS request message to the lower RIVA sub-system if DAL
3863 is in state STARTED.
3864
3865 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003866 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003867
Jeff Johnsone7245742012-09-05 17:12:55 -07003868
3869 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003870 response of the Enter IMPS operation received from the
3871 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003872
Jeff Johnson295189b2012-06-20 16:38:30 -07003873 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 callback
3875
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 @see WDI_Start
3877 @return Result of the function call
3878*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003879WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003880WDI_EnterImpsReq
3881(
Mihir Shetea4306052014-03-25 00:02:54 +05303882 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003883 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3884 void* pUserData
3885)
3886{
3887 WDI_EventInfoType wdiEventData;
3888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3889
3890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 ------------------------------------------------------------------------*/
3893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3894 {
3895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3896 "WDI API call before module is initialized - Fail request");
3897
Jeff Johnsone7245742012-09-05 17:12:55 -07003898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 }
3900
3901 /*------------------------------------------------------------------------
3902 Fill in Event data and post to the Main FSM
3903 ------------------------------------------------------------------------*/
3904 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303905 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3906 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 wdiEventData.pUserData = pUserData;
3909
3910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3911
3912}/*WDI_EnterImpsReq*/
3913
3914/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003915 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 request the device to get out of IMPS power state. Upon
3917 the call of this API the WLAN DAL will send a HAL Exit
3918 IMPS request message to the lower RIVA sub-system if DAL
3919 is in state STARTED.
3920
3921 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003922 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003923
Jeff Johnson295189b2012-06-20 16:38:30 -07003924
Jeff Johnsone7245742012-09-05 17:12:55 -07003925
3926 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003927 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003928
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003930 callback
3931
Jeff Johnson295189b2012-06-20 16:38:30 -07003932 @see WDI_Start
3933 @return Result of the function call
3934*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003935WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003936WDI_ExitImpsReq
3937(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303938 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003939 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3940 void* pUserData
3941)
3942{
3943 WDI_EventInfoType wdiEventData;
3944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3945
3946 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 ------------------------------------------------------------------------*/
3949 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3950 {
3951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3952 "WDI API call before module is initialized - Fail request");
3953
Jeff Johnsone7245742012-09-05 17:12:55 -07003954 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003955 }
3956
3957 /*------------------------------------------------------------------------
3958 Fill in Event data and post to the Main FSM
3959 ------------------------------------------------------------------------*/
3960 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303961 wdiEventData.pEventData = pwdiExitImpsReqParams;
3962 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 wdiEventData.pUserData = pUserData;
3965
3966 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3967
3968}/*WDI_ExitImpsReq*/
3969
3970/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003971 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003972 request the device to get into BMPS power state. Upon
3973 the call of this API the WLAN DAL will pack and send a
3974 HAL Enter BMPS request message to the lower RIVA
3975 sub-system if DAL is in state STARTED.
3976
3977 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003978 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003979
3980 WDI_PostAssocReq must have been called.
3981
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003983 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003984
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 wdiEnterBmpsRspCb: callback for passing back the
3986 response of the Enter BMPS operation received from the
3987 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003988
Jeff Johnson295189b2012-06-20 16:38:30 -07003989 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003990 callback
3991
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 @see WDI_PostAssocReq
3993 @return Result of the function call
3994*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003995WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003996WDI_EnterBmpsReq
3997(
3998 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3999 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
4000 void* pUserData
4001)
4002{
4003 WDI_EventInfoType wdiEventData;
4004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4005
4006 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004007 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004008 ------------------------------------------------------------------------*/
4009 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4010 {
4011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4012 "WDI API call before module is initialized - Fail request");
4013
Jeff Johnsone7245742012-09-05 17:12:55 -07004014 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004015 }
4016
4017 /*------------------------------------------------------------------------
4018 Fill in Event data and post to the Main FSM
4019 ------------------------------------------------------------------------*/
4020 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004021 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
4022 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
4023 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004024 wdiEventData.pUserData = pUserData;
4025
4026 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4027
4028}/*WDI_EnterBmpsReq*/
4029
4030/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004031 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004032 request the device to get out of BMPS power state. Upon
4033 the call of this API the WLAN DAL will pack and send a
4034 HAL Exit BMPS request message to the lower RIVA
4035 sub-system if DAL is in state STARTED.
4036
4037 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004038 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004039
4040 WDI_PostAssocReq must have been called.
4041
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004044
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 wdiExitBmpsRspCb: callback for passing back the response
4046 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004047
Jeff Johnson295189b2012-06-20 16:38:30 -07004048 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 callback
4050
Jeff Johnson295189b2012-06-20 16:38:30 -07004051 @see WDI_PostAssocReq
4052 @return Result of the function call
4053*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004054WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004055WDI_ExitBmpsReq
4056(
4057 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4058 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4059 void* pUserData
4060)
4061{
4062 WDI_EventInfoType wdiEventData;
4063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4064
4065 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004066 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 ------------------------------------------------------------------------*/
4068 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4069 {
4070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4071 "WDI API call before module is initialized - Fail request");
4072
Jeff Johnsone7245742012-09-05 17:12:55 -07004073 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004074 }
4075
4076 /*------------------------------------------------------------------------
4077 Fill in Event data and post to the Main FSM
4078 ------------------------------------------------------------------------*/
4079 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4081 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4082 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004083 wdiEventData.pUserData = pUserData;
4084
4085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4086
4087}/*WDI_ExitBmpsReq*/
4088
4089/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004090 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004091 request the device to get into UAPSD power state. Upon
4092 the call of this API the WLAN DAL will pack and send a
4093 HAL Enter UAPSD request message to the lower RIVA
4094 sub-system if DAL is in state STARTED.
4095
4096 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004098
4099 WDI_PostAssocReq must have been called.
4100 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004101
4102 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004104
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 wdiEnterUapsdRspCb: callback for passing back the
4106 response of the Enter UAPSD operation received from the
4107 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004108
Jeff Johnson295189b2012-06-20 16:38:30 -07004109 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 callback
4111
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4113 @return Result of the function call
4114*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004115WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004116WDI_EnterUapsdReq
4117(
4118 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4119 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4120 void* pUserData
4121)
4122{
4123 WDI_EventInfoType wdiEventData;
4124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4125
4126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 ------------------------------------------------------------------------*/
4129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4130 {
4131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4132 "WDI API call before module is initialized - Fail request");
4133
Jeff Johnsone7245742012-09-05 17:12:55 -07004134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004135 }
4136
4137 /*------------------------------------------------------------------------
4138 Fill in Event data and post to the Main FSM
4139 ------------------------------------------------------------------------*/
4140 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004141 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4142 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4143 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004144 wdiEventData.pUserData = pUserData;
4145
4146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4147
4148}/*WDI_EnterUapsdReq*/
4149
4150/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004151 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004152 request the device to get out of UAPSD power state. Upon
4153 the call of this API the WLAN DAL will send a HAL Exit
4154 UAPSD request message to the lower RIVA sub-system if
4155 DAL is in state STARTED.
4156
4157 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004158 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004159
4160 WDI_PostAssocReq must have been called.
4161
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 response of the Exit UAPSD operation received from the
4164 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004165
Jeff Johnson295189b2012-06-20 16:38:30 -07004166 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004167 callback
4168
Jeff Johnson295189b2012-06-20 16:38:30 -07004169 @see WDI_PostAssocReq
4170 @return Result of the function call
4171*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004172WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004173WDI_ExitUapsdReq
4174(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004175 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004176 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4177 void* pUserData
4178)
4179{
4180 WDI_EventInfoType wdiEventData;
4181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4182
4183 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004184 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 ------------------------------------------------------------------------*/
4186 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4187 {
4188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4189 "WDI API call before module is initialized - Fail request");
4190
Jeff Johnsone7245742012-09-05 17:12:55 -07004191 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 }
4193
4194 /*------------------------------------------------------------------------
4195 Fill in Event data and post to the Main FSM
4196 ------------------------------------------------------------------------*/
4197 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004198 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4199 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004200 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 wdiEventData.pUserData = pUserData;
4202
4203 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4204
4205}/*WDI_ExitUapsdReq*/
4206
4207/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004208 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004209 MAC wants to set the UAPSD related configurations
4210 of an associated STA (while acting as an AP) to the WLAN
4211 Device. Upon the call of this API the WLAN DAL will pack
4212 and send a HAL Update UAPSD params request message to
4213 the lower RIVA sub-system if DAL is in state STARTED.
4214
4215 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004217
4218 WDI_ConfigBSSReq must have been called.
4219
Jeff Johnsone7245742012-09-05 17:12:55 -07004220 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004221 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004222
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 wdiUpdateUapsdParamsCb: callback for passing back the
4224 response of the update UAPSD params operation received
4225 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004226
Jeff Johnson295189b2012-06-20 16:38:30 -07004227 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004228 callback
4229
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 @see WDI_ConfigBSSReq
4231 @return Result of the function call
4232*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004233WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004234WDI_UpdateUapsdParamsReq
4235(
4236 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4237 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4238 void* pUserData
4239)
4240{
4241 WDI_EventInfoType wdiEventData;
4242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4243
4244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004245 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004246 ------------------------------------------------------------------------*/
4247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4248 {
4249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4250 "WDI API call before module is initialized - Fail request");
4251
Jeff Johnsone7245742012-09-05 17:12:55 -07004252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004253 }
4254
4255 /*------------------------------------------------------------------------
4256 Fill in Event data and post to the Main FSM
4257 ------------------------------------------------------------------------*/
4258 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004259 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004260 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004261 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 wdiEventData.pUserData = pUserData;
4263
4264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4265
4266}/*WDI_UpdateUapsdParamsReq*/
4267
4268/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004269 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004270 MAC wants to set the UAPSD related configurations before
4271 requesting for enter UAPSD power state to the WLAN
4272 Device. Upon the call of this API the WLAN DAL will pack
4273 and send a HAL Set UAPSD params request message to
4274 the lower RIVA sub-system if DAL is in state STARTED.
4275
4276 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004277 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004278
4279 WDI_PostAssocReq must have been called.
4280
4281 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4282 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004283
Jeff Johnson295189b2012-06-20 16:38:30 -07004284 wdiSetUapsdAcParamsCb: callback for passing back the
4285 response of the set UAPSD params operation received from
4286 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004287
Jeff Johnson295189b2012-06-20 16:38:30 -07004288 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004289 callback
4290
Jeff Johnson295189b2012-06-20 16:38:30 -07004291 @see WDI_PostAssocReq
4292 @return Result of the function call
4293*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004294WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004295WDI_SetUapsdAcParamsReq
4296(
4297 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4298 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4299 void* pUserData
4300)
4301{
4302 WDI_EventInfoType wdiEventData;
4303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4304
4305 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004306 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004307 ------------------------------------------------------------------------*/
4308 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4309 {
4310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4311 "WDI API call before module is initialized - Fail request");
4312
Jeff Johnsone7245742012-09-05 17:12:55 -07004313 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004314 }
4315
4316 /*------------------------------------------------------------------------
4317 Fill in Event data and post to the Main FSM
4318 ------------------------------------------------------------------------*/
4319 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004320 wdiEventData.pEventData = pwdiUapsdInfo;
4321 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4322 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 wdiEventData.pUserData = pUserData;
4324
4325 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4326
4327}/*WDI_SetUapsdAcParamsReq*/
4328
4329/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304330 @brief WDI_FWLoggingDXEdoneInd
4331
4332 FW Logging DXE done Indication from the upper layer will be sent
4333 down to HAL
4334
4335 @param WDI_FWLoggingDXEdoneIndInfoType
4336
4337 @see
4338
4339 @return Status of the request
4340*/
4341WDI_Status
4342WDI_FWLoggingDXEdoneInd
4343(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304344 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304345)
4346{
4347
4348 WDI_EventInfoType wdiEventData;
4349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4350
4351 /*------------------------------------------------------------------------
4352 Sanity Check
4353 ------------------------------------------------------------------------*/
4354 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4355 {
4356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4357 "WDI API call before module is initialized - Fail request");
4358
4359 return WDI_STATUS_E_NOT_ALLOWED;
4360 }
4361
4362 /*------------------------------------------------------------------------
4363 Fill in Event data and post to the Main FSM
4364 ------------------------------------------------------------------------*/
4365 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304366 wdiEventData.pEventData = (void *)&data;
4367 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304368 wdiEventData.pCBfnc = NULL;
4369 wdiEventData.pUserData = NULL;
4370
4371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4372
4373}/*WDI_FWLoggingDXEdoneInd*/
4374
4375/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304376 @brief WDI_GetFrameLogReq will be called when the upper
4377 MAC wants to initialize frame logging. Upon the call of
4378 this API the WLAN DAL will pack and send a HAL
4379 Frame logging init request message to
4380 the lower RIVA sub-system.
4381
4382 In state BUSY this request will be queued. Request won't
4383 be allowed in any other state.
4384
4385
4386 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4387 as specified by the Device Interface
4388
4389 wdiGetFrameLogRspCb: callback for passing back the
4390 response of the frame logging init operation received
4391 from the device
4392
4393 pUserData: user data will be passed back with the
4394 callback
4395
4396 @return Result of the function call
4397*/
4398WDI_Status
4399WDI_GetFrameLogReq
4400(
4401 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4402 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4403 void* pUserData
4404)
4405{
4406 WDI_EventInfoType wdiEventData;
4407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4408
4409 /*------------------------------------------------------------------------
4410 Sanity Check
4411 ------------------------------------------------------------------------*/
4412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4413 {
4414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4415 "WDI API call before module is initialized - Fail request");
4416
4417 return WDI_STATUS_E_NOT_ALLOWED;
4418 }
4419
4420 /*------------------------------------------------------------------------
4421 Fill in Event data and post to the Main FSM
4422 ------------------------------------------------------------------------*/
4423 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4424 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4425 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4426 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4427 wdiEventData.pUserData = pUserData;
4428
4429 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4430}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304431
4432
4433/**
4434 @brief WDI_FatalEventLogsReq will be called when the upper
4435 MAC wants to send the flush command. Upon the call of
4436 this API the WLAN DAL will pack and send a HAL
4437 Fatal Event Req message to the lower RIVA sub-system.
4438
4439 In state BUSY this request will be queued. Request won't
4440 be allowed in any other state.
4441
4442
4443 @param pwdiFlushLogsReqInfo: the Flush Logs params
4444 as specified by the Device Interface
4445
4446 wdiFlushLogsRspCb: callback for passing back the
4447 response of the Flush Logs operation received
4448 from the device
4449
4450 pUserData: user data will be passed back with the
4451 callback
4452
4453 @return Result of the function call
4454*/
4455
4456WDI_Status
4457WDI_FatalEventLogsReq
4458(
4459 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4460 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4461 void* pUserData
4462)
4463{
4464 WDI_EventInfoType wdiEventData;
4465
4466 /*------------------------------------------------------------------------
4467 Sanity Check
4468 ------------------------------------------------------------------------*/
4469 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4470 {
4471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4472 "WDI API call before module is initialized - Fail request");
4473
4474 return WDI_STATUS_E_NOT_ALLOWED;
4475 }
4476
4477 /*------------------------------------------------------------------------
4478 Fill in Event data and post to the Main FSM
4479 ------------------------------------------------------------------------*/
4480 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4481 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4482 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4483 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4484 wdiEventData.pUserData = pUserData;
4485
4486 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4487
4488}
4489
4490
Siddharth Bhal64246172015-02-27 01:04:37 +05304491/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304492 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304493 MAC wants to initialize frame logging. Upon the call of
4494 this API the WLAN DAL will pack and send a HAL
4495 Frame logging init request message to
4496 the lower RIVA sub-system.
4497
4498 In state BUSY this request will be queued. Request won't
4499 be allowed in any other state.
4500
4501
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304502 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304503 as specified by the Device Interface
4504
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304505 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304506 response of the frame logging init operation received
4507 from the device
4508
4509 pUserData: user data will be passed back with the
4510 callback
4511
4512 @return Result of the function call
4513*/
4514WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304515WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304516(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304517 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4518 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304519 void* pUserData
4520)
4521{
4522 WDI_EventInfoType wdiEventData;
4523
4524 /*------------------------------------------------------------------------
4525 Sanity Check
4526 ------------------------------------------------------------------------*/
4527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4528 {
4529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4530 "WDI API call before module is initialized - Fail request");
4531
4532 return WDI_STATUS_E_NOT_ALLOWED;
4533 }
4534
4535 /*------------------------------------------------------------------------
4536 Fill in Event data and post to the Main FSM
4537 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304538 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4539 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4540 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4541 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304542 wdiEventData.pUserData = pUserData;
4543
4544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4545}
4546
c_manjeecfd1efb2015-09-25 19:32:34 +05304547
4548/**
4549 @brief WDI_FwrMemDumpReq will be called when the upper
4550 MAC wants to get fwr mem dump. Upon the call of
4551 this API the WLAN DAL will pack and send a HAL
4552 Frame logging init request message to
4553 the lower RIVA sub-system.
4554
4555 In state BUSY this request will be queued. Request won't
4556 be allowed in any other state.
4557
4558
4559 @param pWdiFwrMemDumpReq: the fwr mem dump req params
4560 as specified by the Device Interface
4561
4562 wdiFWLoggingInitReqCb: callback for passing back the
4563 response of the frame logging init operation received
4564 from the device
4565
4566 pUserData: user data will be passed back with the
4567 callback
4568
4569 @return Result of the function call
4570*/
4571
4572WDI_Status
4573WDI_FwrMemDumpReq
4574
4575(
4576 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
4577 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
4578 void* pUserData
4579)
4580{
4581 WDI_EventInfoType wdiEventData;
4582
4583 /*------------------------------------------------------------------------
4584 Sanity Check
4585 ------------------------------------------------------------------------*/
4586 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4587 {
4588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4589 "WDI API call before module is initialized - Fail request");
4590
4591 return WDI_STATUS_E_NOT_ALLOWED;
4592 }
4593
4594 /*------------------------------------------------------------------------
4595 Fill in Event data and post to the Main FSM
4596 ------------------------------------------------------------------------*/
4597 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
4598 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
4599 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
4600 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
4601 wdiEventData.pUserData = pUserData;
4602
4603 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4604}
4605
4606
4607
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304608/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05304609 @brief WDI_StartRssiMonitorReq will be called when the upper
4610 MAC wants to initialize Rssi Monitor on a bssid.
4611 Upon the call of this API the WLAN DAL will pack and
4612 send a HAL Rssi Monitor init request message to
4613 the lower RIVA sub-system.
4614
4615 In state BUSY this request will be queued. Request won't
4616 be allowed in any other state.
4617
4618
4619 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4620 as specified by the Device Interface
4621
4622 wdiRssiMonitorStartRspCb: callback for passing back the
4623 response of the rssi monitor operation received
4624 from the device
4625
4626 pUserData: user data will be passed back with the
4627 callback
4628
4629 @return Result of the function call
4630*/
4631WDI_Status
4632WDI_StartRssiMonitorReq
4633(
4634 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4635 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
4636 void* pUserData
4637)
4638{
4639 WDI_EventInfoType wdiEventData;
4640
4641 /*------------------------------------------------------------------------
4642 Sanity Check
4643 ------------------------------------------------------------------------*/
4644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4645 {
4646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4647 "WDI API call before module is initialized - Fail request");
4648
4649 return WDI_STATUS_E_NOT_ALLOWED;
4650 }
4651
4652 /*------------------------------------------------------------------------
4653 Fill in Event data and post to the Main FSM
4654 ------------------------------------------------------------------------*/
4655 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
4656 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4657 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4658 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
4659 wdiEventData.pUserData = pUserData;
4660
4661 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4662}
4663
4664/**
4665 @brief WDI_StopRssiMonitorReq will be called when the upper
4666 MAC wants to stop Rssi Monitor on a bssid.
4667 Upon the call of this API the WLAN DAL will pack and
4668 send a HAL Rssi Monitor stop request message to
4669 the lower RIVA sub-system.
4670
4671 In state BUSY this request will be queued. Request won't
4672 be allowed in any other state.
4673
4674
4675 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4676 as specified by the Device Interface
4677
4678 wdiRssiMonitorStopRspCb: callback for passing back the
4679 response of the rssi monitor operation received
4680 from the device
4681
4682 pUserData: user data will be passed back with the
4683 callback
4684
4685 @return Result of the function call
4686*/
4687WDI_Status
4688WDI_StopRssiMonitorReq
4689(
4690 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4691 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
4692 void* pUserData
4693)
4694{
4695 WDI_EventInfoType wdiEventData;
4696
4697 /*------------------------------------------------------------------------
4698 Sanity Check
4699 ------------------------------------------------------------------------*/
4700 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4701 {
4702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4703 "WDI API call before module is initialized - Fail request");
4704
4705 return WDI_STATUS_E_NOT_ALLOWED;
4706 }
4707
4708 /*------------------------------------------------------------------------
4709 Fill in Event data and post to the Main FSM
4710 ------------------------------------------------------------------------*/
4711 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
4712 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4713 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4714 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
4715 wdiEventData.pUserData = pUserData;
4716
4717 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4718}
4719
4720
4721/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004722 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004723 MAC wants to set/reset the RXP filters for received pkts
4724 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4725 and send a HAL configure RXP filter request message to
4726 the lower RIVA sub-system.
4727
4728 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004729 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004730
Jeff Johnsone7245742012-09-05 17:12:55 -07004731
4732 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004733 filter as specified by the Device
4734 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004735
Jeff Johnson295189b2012-06-20 16:38:30 -07004736 wdiConfigureRxpFilterCb: callback for passing back the
4737 response of the configure RXP filter operation received
4738 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004739
Jeff Johnson295189b2012-06-20 16:38:30 -07004740 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004741 callback
4742
Jeff Johnson295189b2012-06-20 16:38:30 -07004743 @return Result of the function call
4744*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004745WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004746WDI_ConfigureRxpFilterReq
4747(
4748 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4749 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4750 void* pUserData
4751)
4752{
4753 WDI_EventInfoType wdiEventData;
4754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4755
4756 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004757 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004758 ------------------------------------------------------------------------*/
4759 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4760 {
4761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4762 "WDI API call before module is initialized - Fail request");
4763
Jeff Johnsone7245742012-09-05 17:12:55 -07004764 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004765 }
4766
4767 /*------------------------------------------------------------------------
4768 Fill in Event data and post to the Main FSM
4769 ------------------------------------------------------------------------*/
4770 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004771 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4772 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4773 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 wdiEventData.pUserData = pUserData;
4775
4776 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4777}/*WDI_ConfigureRxpFilterReq*/
4778
4779/**
4780 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4781 wants to set the beacon filters while in power save.
4782 Upon the call of this API the WLAN DAL will pack and
4783 send a Beacon filter request message to the
4784 lower RIVA sub-system.
4785
4786 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004787 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004788
Jeff Johnsone7245742012-09-05 17:12:55 -07004789
4790 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004791 filter as specified by the Device
4792 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004793
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 wdiBeaconFilterCb: callback for passing back the
4795 response of the set beacon filter operation received
4796 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004797
Jeff Johnson295189b2012-06-20 16:38:30 -07004798 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 callback
4800
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 @return Result of the function call
4802*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004803WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004804WDI_SetBeaconFilterReq
4805(
4806 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4807 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4808 void* pUserData
4809)
4810{
4811 WDI_EventInfoType wdiEventData;
4812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4813
4814 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004815 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004816 ------------------------------------------------------------------------*/
4817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4818 {
4819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4820 "WDI API call before module is initialized - Fail request");
4821
Jeff Johnsone7245742012-09-05 17:12:55 -07004822 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004823 }
4824
4825 /*------------------------------------------------------------------------
4826 Fill in Event data and post to the Main FSM
4827 ------------------------------------------------------------------------*/
4828 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004829 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004830 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 wdiEventData.pUserData = pUserData;
4833
4834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4835}/*WDI_SetBeaconFilterReq*/
4836
4837/**
4838 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4839 wants to remove the beacon filter for particular IE
4840 while in power save. Upon the call of this API the WLAN
4841 DAL will pack and send a remove Beacon filter request
4842 message to the lower RIVA sub-system.
4843
4844 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004845 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004846
Jeff Johnsone7245742012-09-05 17:12:55 -07004847
4848 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004849 filter as specified by the Device
4850 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004851
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 wdiBeaconFilterCb: callback for passing back the
4853 response of the remove beacon filter operation received
4854 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004855
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004857 callback
4858
Jeff Johnson295189b2012-06-20 16:38:30 -07004859 @return Result of the function call
4860*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004861WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004862WDI_RemBeaconFilterReq
4863(
4864 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4865 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4866 void* pUserData
4867)
4868{
4869 WDI_EventInfoType wdiEventData;
4870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4871
4872 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004874 ------------------------------------------------------------------------*/
4875 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4876 {
4877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4878 "WDI API call before module is initialized - Fail request");
4879
Jeff Johnsone7245742012-09-05 17:12:55 -07004880 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 }
4882
4883 /*------------------------------------------------------------------------
4884 Fill in Event data and post to the Main FSM
4885 ------------------------------------------------------------------------*/
4886 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004887 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004888 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004889 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004890 wdiEventData.pUserData = pUserData;
4891
4892 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4893}/*WDI_RemBeaconFilterReq*/
4894
4895/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 MAC wants to set the RSSI thresholds related
4898 configurations while in power save. Upon the call of
4899 this API the WLAN DAL will pack and send a HAL Set RSSI
4900 thresholds request message to the lower RIVA
4901 sub-system if DAL is in state STARTED.
4902
4903 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004905
4906 WDI_PostAssocReq must have been called.
4907
4908 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4909 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004910
Jeff Johnson295189b2012-06-20 16:38:30 -07004911 wdiSetUapsdAcParamsCb: callback for passing back the
4912 response of the set UAPSD params operation received from
4913 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004914
Jeff Johnson295189b2012-06-20 16:38:30 -07004915 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004916 callback
4917
Jeff Johnson295189b2012-06-20 16:38:30 -07004918 @see WDI_PostAssocReq
4919 @return Result of the function call
4920*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004921WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004922WDI_SetRSSIThresholdsReq
4923(
4924 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4925 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4926 void* pUserData
4927)
4928{
4929 WDI_EventInfoType wdiEventData;
4930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4931
4932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004933 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004934 ------------------------------------------------------------------------*/
4935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4936 {
4937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4938 "WDI API call before module is initialized - Fail request");
4939
Jeff Johnsone7245742012-09-05 17:12:55 -07004940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004941 }
4942
4943 /*------------------------------------------------------------------------
4944 Fill in Event data and post to the Main FSM
4945 ------------------------------------------------------------------------*/
4946 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004947 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004948 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 wdiEventData.pUserData = pUserData;
4951
4952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4953}/* WDI_SetRSSIThresholdsReq*/
4954
4955/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 wants to set the filter to minimize unnecessary host
4958 wakeup due to broadcast traffic while in power save.
4959 Upon the call of this API the WLAN DAL will pack and
4960 send a HAL host offload request message to the
4961 lower RIVA sub-system if DAL is in state STARTED.
4962
4963 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004964 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004965
4966 WDI_PostAssocReq must have been called.
4967
Jeff Johnsone7245742012-09-05 17:12:55 -07004968 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004970
Jeff Johnson295189b2012-06-20 16:38:30 -07004971 wdiHostOffloadCb: callback for passing back the response
4972 of the host offload operation received from the
4973 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004974
Jeff Johnson295189b2012-06-20 16:38:30 -07004975 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004976 callback
4977
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 @see WDI_PostAssocReq
4979 @return Result of the function call
4980*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004981WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004982WDI_HostOffloadReq
4983(
4984 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4985 WDI_HostOffloadCb wdiHostOffloadCb,
4986 void* pUserData
4987)
4988{
4989 WDI_EventInfoType wdiEventData;
4990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4991
4992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004994 ------------------------------------------------------------------------*/
4995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4996 {
4997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4998 "WDI API call before module is initialized - Fail request");
4999
Jeff Johnsone7245742012-09-05 17:12:55 -07005000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 }
5002
5003 /*------------------------------------------------------------------------
5004 Fill in Event data and post to the Main FSM
5005 ------------------------------------------------------------------------*/
5006 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005007 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005008 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005009 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005010 wdiEventData.pUserData = pUserData;
5011
5012 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5013}/*WDI_HostOffloadReq*/
5014
5015/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005016 @brief WDI_KeepAliveReq will be called when the upper MAC
5017 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07005018 and minimize unnecessary host wakeups due to while in power save.
5019 Upon the call of this API the WLAN DAL will pack and
5020 send a HAL Keep Alive request message to the
5021 lower RIVA sub-system if DAL is in state STARTED.
5022
5023 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005024 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005025
5026 WDI_PostAssocReq must have been called.
5027
Jeff Johnsone7245742012-09-05 17:12:55 -07005028 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005029 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005030
Jeff Johnson295189b2012-06-20 16:38:30 -07005031 wdiKeepAliveCb: callback for passing back the response
5032 of the Keep Alive operation received from the
5033 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005034
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005036 callback
5037
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 @see WDI_PostAssocReq
5039 @return Result of the function call
5040*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005041WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005042WDI_KeepAliveReq
5043(
5044 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
5045 WDI_KeepAliveCb wdiKeepAliveCb,
5046 void* pUserData
5047)
5048{
5049 WDI_EventInfoType wdiEventData;
5050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5051
5052 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005054 ------------------------------------------------------------------------*/
5055 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5056 {
5057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5058 "WDI_KeepAliveReq: WDI API call before module "
5059 "is initialized - Fail request");
5060
Jeff Johnsone7245742012-09-05 17:12:55 -07005061 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005062 }
5063
5064 /*------------------------------------------------------------------------
5065 Fill in Event data and post to the Main FSM
5066 ------------------------------------------------------------------------*/
5067 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005068 wdiEventData.pEventData = pwdiKeepAliveParams;
5069 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5070 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 wdiEventData.pUserData = pUserData;
5072
5073 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5074}/*WDI_KeepAliveReq*/
5075
5076/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005078 wants to set the Wowl Bcast ptrn to minimize unnecessary
5079 host wakeup due to broadcast traffic while in power
5080 save. Upon the call of this API the WLAN DAL will pack
5081 and send a HAL Wowl Bcast ptrn request message to the
5082 lower RIVA sub-system if DAL is in state STARTED.
5083
5084 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005085 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005086
5087 WDI_PostAssocReq must have been called.
5088
Jeff Johnsone7245742012-09-05 17:12:55 -07005089 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005090 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005091
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 wdiWowlAddBcPtrnCb: callback for passing back the
5093 response of the add Wowl bcast ptrn operation received
5094 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005095
Jeff Johnson295189b2012-06-20 16:38:30 -07005096 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005097 callback
5098
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 @see WDI_PostAssocReq
5100 @return Result of the function call
5101*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005102WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005103WDI_WowlAddBcPtrnReq
5104(
5105 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5106 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5107 void* pUserData
5108)
5109{
5110 WDI_EventInfoType wdiEventData;
5111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5112
5113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005114 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005115 ------------------------------------------------------------------------*/
5116 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5117 {
5118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5119 "WDI API call before module is initialized - Fail request");
5120
Jeff Johnsone7245742012-09-05 17:12:55 -07005121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 }
5123
5124 /*------------------------------------------------------------------------
5125 Fill in Event data and post to the Main FSM
5126 ------------------------------------------------------------------------*/
5127 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005128 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005129 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 wdiEventData.pUserData = pUserData;
5132
5133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5134}/*WDI_WowlAddBcPtrnReq*/
5135
5136/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 wants to clear the Wowl Bcast ptrn. Upon the call of
5139 this API the WLAN DAL will pack and send a HAL delete
5140 Wowl Bcast ptrn request message to the lower RIVA
5141 sub-system if DAL is in state STARTED.
5142
5143 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005144 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005145
5146 WDI_WowlAddBcPtrnReq must have been called.
5147
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005149 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005150
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 wdiWowlDelBcPtrnCb: callback for passing back the
5152 response of the del Wowl bcast ptrn operation received
5153 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005154
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005156 callback
5157
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 @see WDI_WowlAddBcPtrnReq
5159 @return Result of the function call
5160*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005161WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005162WDI_WowlDelBcPtrnReq
5163(
5164 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5165 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5166 void* pUserData
5167)
5168{
5169 WDI_EventInfoType wdiEventData;
5170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5171
5172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005173 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005174 ------------------------------------------------------------------------*/
5175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5176 {
5177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5178 "WDI API call before module is initialized - Fail request");
5179
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 }
5182
5183 /*------------------------------------------------------------------------
5184 Fill in Event data and post to the Main FSM
5185 ------------------------------------------------------------------------*/
5186 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005187 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005188 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 wdiEventData.pUserData = pUserData;
5191
5192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5193}/*WDI_WowlDelBcPtrnReq*/
5194
5195/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 wants to enter the Wowl state to minimize unnecessary
5198 host wakeup while in power save. Upon the call of this
5199 API the WLAN DAL will pack and send a HAL Wowl enter
5200 request message to the lower RIVA sub-system if DAL is
5201 in state STARTED.
5202
5203 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005204 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005205
5206 WDI_PostAssocReq must have been called.
5207
Jeff Johnsone7245742012-09-05 17:12:55 -07005208 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005210
Jeff Johnson295189b2012-06-20 16:38:30 -07005211 wdiWowlEnterReqCb: callback for passing back the
5212 response of the enter Wowl operation received from the
5213 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005214
Jeff Johnson295189b2012-06-20 16:38:30 -07005215 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005216 callback
5217
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 @see WDI_PostAssocReq
5219 @return Result of the function call
5220*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005221WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005222WDI_WowlEnterReq
5223(
5224 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5225 WDI_WowlEnterReqCb wdiWowlEnterCb,
5226 void* pUserData
5227)
5228{
5229 WDI_EventInfoType wdiEventData;
5230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5231
5232 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005233 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005234 ------------------------------------------------------------------------*/
5235 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5236 {
5237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5238 "WDI API call before module is initialized - Fail request");
5239
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005241 }
5242
5243 /*------------------------------------------------------------------------
5244 Fill in Event data and post to the Main FSM
5245 ------------------------------------------------------------------------*/
5246 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005247 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005248 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005249 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005250 wdiEventData.pUserData = pUserData;
5251
5252 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5253}/*WDI_WowlEnterReq*/
5254
5255/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005257 wants to exit the Wowl state. Upon the call of this API
5258 the WLAN DAL will pack and send a HAL Wowl exit request
5259 message to the lower RIVA sub-system if DAL is in state
5260 STARTED.
5261
5262 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005263 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005264
5265 WDI_WowlEnterReq must have been called.
5266
Jeff Johnsone7245742012-09-05 17:12:55 -07005267 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005269
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 wdiWowlExitReqCb: callback for passing back the response
5271 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005272
Jeff Johnson295189b2012-06-20 16:38:30 -07005273 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 callback
5275
Jeff Johnson295189b2012-06-20 16:38:30 -07005276 @see WDI_WowlEnterReq
5277 @return Result of the function call
5278*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005279WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005280WDI_WowlExitReq
5281(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005282 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 WDI_WowlExitReqCb wdiWowlExitCb,
5284 void* pUserData
5285)
5286{
5287 WDI_EventInfoType wdiEventData;
5288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5289
5290 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005291 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 ------------------------------------------------------------------------*/
5293 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5294 {
5295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5296 "WDI API call before module is initialized - Fail request");
5297
Jeff Johnsone7245742012-09-05 17:12:55 -07005298 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 }
5300
5301 /*------------------------------------------------------------------------
5302 Fill in Event data and post to the Main FSM
5303 ------------------------------------------------------------------------*/
5304 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005305 wdiEventData.pEventData = pwdiWowlExitParams;
5306 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 wdiEventData.pUserData = pUserData;
5309
5310 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5311}/*WDI_WowlExitReq*/
5312
5313/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005315 the upper MAC wants to dynamically adjusts the listen
5316 interval based on the WLAN/MSM activity. Upon the call
5317 of this API the WLAN DAL will pack and send a HAL
5318 configure Apps Cpu Wakeup State request message to the
5319 lower RIVA sub-system.
5320
5321 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005322 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005323
Jeff Johnsone7245742012-09-05 17:12:55 -07005324
5325 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005326 Apps Cpu Wakeup State as specified by the
5327 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005328
Jeff Johnson295189b2012-06-20 16:38:30 -07005329 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5330 back the response of the configure Apps Cpu Wakeup State
5331 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005332
Jeff Johnson295189b2012-06-20 16:38:30 -07005333 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005334 callback
5335
Jeff Johnson295189b2012-06-20 16:38:30 -07005336 @return Result of the function call
5337*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005338WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005339WDI_ConfigureAppsCpuWakeupStateReq
5340(
5341 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5342 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5343 void* pUserData
5344)
5345{
5346 WDI_EventInfoType wdiEventData;
5347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5348
5349 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005350 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005351 ------------------------------------------------------------------------*/
5352 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5353 {
5354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5355 "WDI API call before module is initialized - Fail request");
5356
Jeff Johnsone7245742012-09-05 17:12:55 -07005357 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005358 }
5359
5360 /*------------------------------------------------------------------------
5361 Fill in Event data and post to the Main FSM
5362 ------------------------------------------------------------------------*/
5363 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005364 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5365 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5366 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 wdiEventData.pUserData = pUserData;
5368
5369 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5370}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5371/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005372 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005373 to to perform a flush operation on a given AC. Upon the
5374 call of this API the WLAN DAL will pack and send a HAL
5375 Flush AC request message to the lower RIVA sub-system if
5376 DAL is in state STARTED.
5377
5378 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005379 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005380
5381 WDI_AddBAReq must have been called.
5382
Jeff Johnsone7245742012-09-05 17:12:55 -07005383 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005384 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005385
Jeff Johnson295189b2012-06-20 16:38:30 -07005386 wdiFlushAcRspCb: callback for passing back the response
5387 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005388
Jeff Johnson295189b2012-06-20 16:38:30 -07005389 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005390 callback
5391
Jeff Johnson295189b2012-06-20 16:38:30 -07005392 @see WDI_AddBAReq
5393 @return Result of the function call
5394*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005395WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005396WDI_FlushAcReq
5397(
5398 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5399 WDI_FlushAcRspCb wdiFlushAcRspCb,
5400 void* pUserData
5401)
5402{
5403 WDI_EventInfoType wdiEventData;
5404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5405
5406 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005407 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005408 ------------------------------------------------------------------------*/
5409 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5410 {
5411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5412 "WDI API call before module is initialized - Fail request");
5413
Jeff Johnsone7245742012-09-05 17:12:55 -07005414 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005415 }
5416
5417 /*------------------------------------------------------------------------
5418 Fill in Event data and post to the Main FSM
5419 ------------------------------------------------------------------------*/
5420 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005421 wdiEventData.pEventData = pwdiFlushAcReqParams;
5422 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5423 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 wdiEventData.pUserData = pUserData;
5425
5426 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5427
5428}/*WDI_FlushAcReq*/
5429
5430/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005431 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 wants to notify the lower mac on a BT AMP event. This is
5433 to inform BTC-SLM that some BT AMP event occurred. Upon
5434 the call of this API the WLAN DAL will pack and send a
5435 HAL BT AMP event request message to the lower RIVA
5436 sub-system if DAL is in state STARTED.
5437
5438 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005439 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005440
Jeff Johnsone7245742012-09-05 17:12:55 -07005441
5442 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005443 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005444
Jeff Johnson295189b2012-06-20 16:38:30 -07005445 wdiBtAmpEventRspCb: callback for passing back the
5446 response of the BT AMP event operation received from the
5447 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005448
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005450 callback
5451
Jeff Johnson295189b2012-06-20 16:38:30 -07005452 @return Result of the function call
5453*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005454WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005455WDI_BtAmpEventReq
5456(
5457 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5458 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5459 void* pUserData
5460)
5461{
5462 WDI_EventInfoType wdiEventData;
5463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5464
5465 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005466 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005467 ------------------------------------------------------------------------*/
5468 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5469 {
5470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5471 "WDI API call before module is initialized - Fail request");
5472
Jeff Johnsone7245742012-09-05 17:12:55 -07005473 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005474 }
5475
5476 /*------------------------------------------------------------------------
5477 Fill in Event data and post to the Main FSM
5478 ------------------------------------------------------------------------*/
5479 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005480 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5481 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5482 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005483 wdiEventData.pUserData = pUserData;
5484
5485 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5486
5487}/*WDI_BtAmpEventReq*/
5488
Jeff Johnsone7245742012-09-05 17:12:55 -07005489#ifdef FEATURE_OEM_DATA_SUPPORT
5490/**
5491 @brief WDI_Start Oem Data Req will be called when the upper MAC
5492 wants to notify the lower mac on a oem data Req event.Upon
5493 the call of this API the WLAN DAL will pack and send a
5494 HAL OEM Data Req event request message to the lower RIVA
5495 sub-system if DAL is in state STARTED.
5496
5497 In state BUSY this request will be queued. Request won't
5498 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005499
5500
Jeff Johnsone7245742012-09-05 17:12:55 -07005501
5502 @param pwdiOemDataReqParams: the Oem Data Req as
5503 specified by the Device Interface
5504
5505 wdiStartOemDataRspCb: callback for passing back the
5506 response of the Oem Data Req received from the
5507 device
5508
5509 pUserData: user data will be passed back with the
5510 callback
5511
5512 @return Result of the function call
5513*/
5514WDI_Status
5515WDI_StartOemDataReq
5516(
5517 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5518 WDI_oemDataRspCb wdiOemDataRspCb,
5519 void* pUserData
5520)
5521{
5522 WDI_EventInfoType wdiEventData;
5523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5524
5525 /*------------------------------------------------------------------------
5526 Sanity Check
5527 ------------------------------------------------------------------------*/
5528 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5529 {
5530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5531 "WDI API call before module is initialized - Fail request");
5532
5533 return WDI_STATUS_E_NOT_ALLOWED;
5534 }
5535
5536 /*------------------------------------------------------------------------
5537 Fill in Event data and post to the Main FSM
5538 ------------------------------------------------------------------------*/
5539 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5540 wdiEventData.pEventData = pwdiOemDataReqParams;
5541 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5542 wdiEventData.pCBfnc = wdiOemDataRspCb;
5543 wdiEventData.pUserData = pUserData;
5544
5545 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5546
5547
5548}
5549
5550#endif
5551
5552
5553/*========================================================================
5554
Jeff Johnson295189b2012-06-20 16:38:30 -07005555 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005556
Jeff Johnson295189b2012-06-20 16:38:30 -07005557==========================================================================*/
5558/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005559 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005560 the WLAN HW to change the current channel of operation.
5561 Upon the call of this API the WLAN DAL will pack and
5562 send a HAL Start request message to the lower RIVA
5563 sub-system if DAL is in state STARTED.
5564
5565 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005566 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005567
5568 WDI_Start must have been called.
5569
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005572
Jeff Johnson295189b2012-06-20 16:38:30 -07005573 wdiSwitchChRspCb: callback for passing back the response
5574 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005575
Jeff Johnson295189b2012-06-20 16:38:30 -07005576 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 callback
5578
Jeff Johnson295189b2012-06-20 16:38:30 -07005579 @see WDI_Start
5580 @return Result of the function call
5581*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005582WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005583WDI_SwitchChReq
5584(
5585 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5586 WDI_SwitchChRspCb wdiSwitchChRspCb,
5587 void* pUserData
5588)
5589{
5590 WDI_EventInfoType wdiEventData;
5591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5592
5593 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005594 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005595 ------------------------------------------------------------------------*/
5596 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5597 {
5598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5599 "WDI API call before module is initialized - Fail request");
5600
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005602 }
5603
5604 /*------------------------------------------------------------------------
5605 Fill in Event data and post to the Main FSM
5606 ------------------------------------------------------------------------*/
5607 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005608 wdiEventData.pEventData = pwdiSwitchChReqParams;
5609 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5610 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 wdiEventData.pUserData = pUserData;
5612
5613 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5614
5615}/*WDI_SwitchChReq*/
5616
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005617/**
5618 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5619 the WLAN HW to change the current channel of operation.
5620 Upon the call of this API the WLAN DAL will pack and
5621 send a HAL Start request message to the lower RIVA
5622 sub-system if DAL is in state STARTED.
5623 This request message also includes source of channel switch,
5624 like CSA,
5625
5626 In state BUSY this request will be queued. Request won't
5627 be allowed in any other state.
5628
5629 WDI_Start must have been called.
5630
5631 @param wdiSwitchChReqParams: the switch ch parameters as
5632 specified by the Device Interface
5633
5634 wdiSwitchChRspCb: callback for passing back the response
5635 of the switch ch operation received from the device
5636
5637 pUserData: user data will be passed back with the
5638 callback
5639
5640 @see WDI_Start
5641 @return Result of the function call
5642*/
5643WDI_Status
5644WDI_SwitchChReq_V1
5645(
5646 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5647 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5648 void* pUserData
5649)
5650{
5651 WDI_EventInfoType wdiEventData;
5652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5654 "WDI API call WDI_SwitchChReq_V1");
5655 /*------------------------------------------------------------------------
5656 Sanity Check
5657 ------------------------------------------------------------------------*/
5658 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5659 {
5660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5661 "WDI API call before module is initialized - Fail request");
5662
5663 return WDI_STATUS_E_NOT_ALLOWED;
5664 }
5665
5666 /*------------------------------------------------------------------------
5667 Fill in Event data and post to the Main FSM
5668 ------------------------------------------------------------------------*/
5669 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5670 wdiEventData.pEventData = pwdiSwitchChReqParams;
5671 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5672 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5673 wdiEventData.pUserData = pUserData;
5674
5675 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5676
5677}/*WDI_SwitchChReq_V1*/
5678
Jeff Johnson295189b2012-06-20 16:38:30 -07005679
5680/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005681 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 wishes to add or update a STA in HW. Upon the call of
5683 this API the WLAN DAL will pack and send a HAL Start
5684 message request message to the lower RIVA sub-system if
5685 DAL is in state STARTED.
5686
5687 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005688 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005689
5690 WDI_Start must have been called.
5691
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005693 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005694
Jeff Johnson295189b2012-06-20 16:38:30 -07005695 wdiConfigSTARspCb: callback for passing back the
5696 response of the config STA operation received from the
5697 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005698
Jeff Johnson295189b2012-06-20 16:38:30 -07005699 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005700 callback
5701
Jeff Johnson295189b2012-06-20 16:38:30 -07005702 @see WDI_Start
5703 @return Result of the function call
5704*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005705WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005706WDI_ConfigSTAReq
5707(
5708 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5709 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5710 void* pUserData
5711)
5712{
5713 WDI_EventInfoType wdiEventData;
5714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5715
5716 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005717 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 ------------------------------------------------------------------------*/
5719 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5720 {
5721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5722 "WDI API call before module is initialized - Fail request");
5723
Jeff Johnsone7245742012-09-05 17:12:55 -07005724 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005725 }
5726
5727 /*------------------------------------------------------------------------
5728 Fill in Event data and post to the Main FSM
5729 ------------------------------------------------------------------------*/
5730 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005731 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5732 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5733 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005734 wdiEventData.pUserData = pUserData;
5735
5736 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5737
5738}/*WDI_ConfigSTAReq*/
5739
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005740 /**
5741 @brief WDI_UpdateChannelReq will be called when the upper MAC
5742 wants to update the channel list on change in country code.
5743
5744 In state BUSY this request will be queued. Request won't
5745 be allowed in any other state.
5746
5747 WDI_UpdateChannelReq must have been called.
5748
5749 @param wdiUpdateChannelReqParams: the updated channel parameters
5750 as specified by the Device Interface
5751
5752 wdiUpdateChannelRspCb: callback for passing back the
5753 response of the update channel operation received from
5754 the device
5755
5756 pUserData: user data will be passed back with the
5757 callback
5758
5759 @return Result of the function call
5760*/
5761WDI_Status
5762WDI_UpdateChannelReq
5763(
5764 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5765 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5766 void* pUserData
5767)
5768{
5769 WDI_EventInfoType wdiEventData = {{0}};
5770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5771
5772 /*------------------------------------------------------------------------
5773 Sanity Check
5774 ------------------------------------------------------------------------*/
5775 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5776 {
5777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5778 "WDI API call before module is initialized - Fail request");
5779
5780 return WDI_STATUS_E_NOT_ALLOWED;
5781 }
5782
5783 /*------------------------------------------------------------------------
5784 Fill in Event data and post to the Main FSM
5785 ------------------------------------------------------------------------*/
5786 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5787 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5788 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5789 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5790 wdiEventData.pUserData = pUserData;
5791
5792 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5793
5794}/*WDI_UpdateChannelReq*/
5795
Jeff Johnson295189b2012-06-20 16:38:30 -07005796/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005797 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005798 wants to change the state of an ongoing link. Upon the
5799 call of this API the WLAN DAL will pack and send a HAL
5800 Start message request message to the lower RIVA
5801 sub-system if DAL is in state STARTED.
5802
5803 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005804 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005805
5806 WDI_JoinStartReq must have been called.
5807
Jeff Johnsone7245742012-09-05 17:12:55 -07005808 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005809 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005810
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 wdiSetLinkStateRspCb: callback for passing back the
5812 response of the set link state operation received from
5813 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005814
Jeff Johnson295189b2012-06-20 16:38:30 -07005815 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005816 callback
5817
Jeff Johnson295189b2012-06-20 16:38:30 -07005818 @see WDI_JoinStartReq
5819 @return Result of the function call
5820*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005821WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005822WDI_SetLinkStateReq
5823(
5824 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5825 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5826 void* pUserData
5827)
5828{
5829 WDI_EventInfoType wdiEventData;
5830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5831
5832 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005833 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005834 ------------------------------------------------------------------------*/
5835 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5836 {
5837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5838 "WDI API call before module is initialized - Fail request");
5839
Jeff Johnsone7245742012-09-05 17:12:55 -07005840 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005841 }
5842
5843 /*------------------------------------------------------------------------
5844 Fill in Event data and post to the Main FSM
5845 ------------------------------------------------------------------------*/
5846 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005847 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5848 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5849 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 wdiEventData.pUserData = pUserData;
5851
5852 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5853
5854}/*WDI_SetLinkStateReq*/
5855
5856
5857/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005858 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 to get statistics (MIB counters) from the device. Upon
5860 the call of this API the WLAN DAL will pack and send a
5861 HAL Start request message to the lower RIVA sub-system
5862 if DAL is in state STARTED.
5863
5864 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005865 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005866
5867 WDI_Start must have been called.
5868
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005871
Jeff Johnson295189b2012-06-20 16:38:30 -07005872 wdiGetStatsRspCb: callback for passing back the response
5873 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005874
Jeff Johnson295189b2012-06-20 16:38:30 -07005875 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 callback
5877
Jeff Johnson295189b2012-06-20 16:38:30 -07005878 @see WDI_Start
5879 @return Result of the function call
5880*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005881WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005882WDI_GetStatsReq
5883(
5884 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5885 WDI_GetStatsRspCb wdiGetStatsRspCb,
5886 void* pUserData
5887)
5888{
5889 WDI_EventInfoType wdiEventData;
5890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5891
5892 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005893 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005894 ------------------------------------------------------------------------*/
5895 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5896 {
5897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5898 "WDI API call before module is initialized - Fail request");
5899
Jeff Johnsone7245742012-09-05 17:12:55 -07005900 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005901 }
5902
5903 /*------------------------------------------------------------------------
5904 Fill in Event data and post to the Main FSM
5905 ------------------------------------------------------------------------*/
5906 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005907 wdiEventData.pEventData = pwdiGetStatsReqParams;
5908 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5909 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005910 wdiEventData.pUserData = pUserData;
5911
5912 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5913
5914}/*WDI_GetStatsReq*/
5915
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005916#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005917/**
5918 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5919 to get roam rssi from the device. Upon
5920 the call of this API the WLAN DAL will pack and send a
5921 HAL Start request message to the lower RIVA sub-system
5922 if DAL is in state STARTED.
5923
5924 In state BUSY this request will be queued. Request won't
5925 be allowed in any other state.
5926
5927 WDI_Start must have been called.
5928
5929 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5930 specified by the Device Interface
5931
5932 wdiGetRoamRssiRspCb: callback for passing back the response
5933 of the get stats operation received from the device
5934
5935 pUserData: user data will be passed back with the
5936 callback
5937
5938 @see WDI_Start
5939 @return Result of the function call
5940*/
5941WDI_Status
5942WDI_GetRoamRssiReq
5943(
5944 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5945 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5946 void* pUserData
5947)
5948{
5949 WDI_EventInfoType wdiEventData;
5950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5951
5952 /*------------------------------------------------------------------------
5953 Sanity Check
5954 ------------------------------------------------------------------------*/
5955 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5956 {
5957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5958 "WDI API call before module is initialized - Fail request");
5959
5960 return WDI_STATUS_E_NOT_ALLOWED;
5961 }
5962 /*------------------------------------------------------------------------
5963 Fill in Event data and post to the Main FSM
5964 ------------------------------------------------------------------------*/
5965 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5966 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5967 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5968 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5969 wdiEventData.pUserData = pUserData;
5970
5971 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5972
5973}/*WDI_GetRoamRssiReq*/
5974#endif
5975
Jeff Johnson295189b2012-06-20 16:38:30 -07005976
5977/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005978 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005979 it wishes to change the configuration of the WLAN
5980 Device. Upon the call of this API the WLAN DAL will pack
5981 and send a HAL Update CFG request message to the lower
5982 RIVA sub-system if DAL is in state STARTED.
5983
5984 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005985 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005986
5987 WDI_Start must have been called.
5988
Jeff Johnsone7245742012-09-05 17:12:55 -07005989 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005990 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005991
Jeff Johnson295189b2012-06-20 16:38:30 -07005992 wdiUpdateCfgsRspCb: callback for passing back the
5993 response of the update cfg operation received from the
5994 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005995
Jeff Johnson295189b2012-06-20 16:38:30 -07005996 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005997 callback
5998
Jeff Johnson295189b2012-06-20 16:38:30 -07005999 @see WDI_Start
6000 @return Result of the function call
6001*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006002WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006003WDI_UpdateCfgReq
6004(
6005 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
6006 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
6007 void* pUserData
6008)
6009{
6010 WDI_EventInfoType wdiEventData;
6011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6012
6013 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006015 ------------------------------------------------------------------------*/
6016 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6017 {
6018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6019 "WDI API call before module is initialized - Fail request");
6020
Jeff Johnsone7245742012-09-05 17:12:55 -07006021 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006022 }
6023
6024 /*------------------------------------------------------------------------
6025 Fill in Event data and post to the Main FSM
6026 ------------------------------------------------------------------------*/
6027 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006028 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
6029 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
6030 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 wdiEventData.pUserData = pUserData;
6032
6033 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6034
6035}/*WDI_UpdateCfgReq*/
6036
6037
6038
6039/**
6040 @brief WDI_AddBAReq will be called when the upper MAC has setup
6041 successfully a BA session and needs to notify the HW for
6042 the appropriate settings to take place. Upon the call of
6043 this API the WLAN DAL will pack and send a HAL Add BA
6044 request message to the lower RIVA sub-system if DAL is
6045 in state STARTED.
6046
6047 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006048 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006049
6050 WDI_PostAssocReq must have been called.
6051
6052 @param wdiAddBAReqParams: the add BA parameters as specified by
6053 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006054
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 wdiAddBARspCb: callback for passing back the response of
6056 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006057
Jeff Johnson295189b2012-06-20 16:38:30 -07006058 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006059 callback
6060
Jeff Johnson295189b2012-06-20 16:38:30 -07006061 @see WDI_PostAssocReq
6062 @return Result of the function call
6063*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006064WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006065WDI_AddBAReq
6066(
6067 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6068 WDI_AddBARspCb wdiAddBARspCb,
6069 void* pUserData
6070)
6071{
6072 WDI_EventInfoType wdiEventData;
6073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6074
6075 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006076 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006077 ------------------------------------------------------------------------*/
6078 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6079 {
6080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6081 "WDI API call before module is initialized - Fail request");
6082
Jeff Johnsone7245742012-09-05 17:12:55 -07006083 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006084 }
6085
6086 /*------------------------------------------------------------------------
6087 Fill in Event data and post to the Main FSM
6088 ------------------------------------------------------------------------*/
6089 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006090 wdiEventData.pEventData = pwdiAddBAReqParams;
6091 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6092 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006093 wdiEventData.pUserData = pUserData;
6094
6095 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6096
6097}/*WDI_AddBAReq*/
6098
6099
6100/**
6101 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6102 successfully a BA session and needs to notify the HW for
6103 the appropriate settings to take place. Upon the call of
6104 this API the WLAN DAL will pack and send a HAL Add BA
6105 request message to the lower RIVA sub-system if DAL is
6106 in state STARTED.
6107
6108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006110
6111 WDI_PostAssocReq must have been called.
6112
6113 @param wdiAddBAReqParams: the add BA parameters as specified by
6114 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006115
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 wdiAddBARspCb: callback for passing back the response of
6117 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006118
Jeff Johnson295189b2012-06-20 16:38:30 -07006119 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006120 callback
6121
Jeff Johnson295189b2012-06-20 16:38:30 -07006122 @see WDI_PostAssocReq
6123 @return Result of the function call
6124*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006125WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006126WDI_TriggerBAReq
6127(
6128 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
6129 WDI_TriggerBARspCb wdiTriggerBARspCb,
6130 void* pUserData
6131)
6132{
6133 WDI_EventInfoType wdiEventData;
6134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6135
6136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006137 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006138 ------------------------------------------------------------------------*/
6139 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6140 {
6141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6142 "WDI API call before module is initialized - Fail request");
6143
Jeff Johnsone7245742012-09-05 17:12:55 -07006144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006145 }
6146
6147 /*------------------------------------------------------------------------
6148 Fill in Event data and post to the Main FSM
6149 ------------------------------------------------------------------------*/
6150 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006151 wdiEventData.pEventData = pwdiTriggerBAReqParams;
6152 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
6153 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006154 wdiEventData.pUserData = pUserData;
6155
6156 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6157
6158}/*WDI_AddBAReq*/
6159
6160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006161 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006162 wishes to update any of the Beacon parameters used by HW.
6163 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6164 message to the lower RIVA sub-system if DAL is in state
6165 STARTED.
6166
6167 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006168 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006169
6170 WDI_PostAssocReq must have been called.
6171
Jeff Johnsone7245742012-09-05 17:12:55 -07006172 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006173 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006174
Jeff Johnson295189b2012-06-20 16:38:30 -07006175 wdiUpdateBeaconParamsRspCb: callback for passing back the
6176 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006177
Jeff Johnson295189b2012-06-20 16:38:30 -07006178 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006179 callback
6180
Jeff Johnson295189b2012-06-20 16:38:30 -07006181 @see WDI_PostAssocReq
6182 @return Result of the function call
6183*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006184WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006185WDI_UpdateBeaconParamsReq
6186(
6187 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6188 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6189 void* pUserData
6190)
6191{
6192 WDI_EventInfoType wdiEventData;
6193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6194
6195 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006196 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006197 ------------------------------------------------------------------------*/
6198 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6199 {
6200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6201 "WDI API call before module is initialized - Fail request");
6202
Jeff Johnsone7245742012-09-05 17:12:55 -07006203 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006204 }
6205
6206 /*------------------------------------------------------------------------
6207 Fill in Event data and post to the Main FSM
6208 ------------------------------------------------------------------------*/
6209 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006210 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6211 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6212 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 wdiEventData.pUserData = pUserData;
6214
6215 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6216
6217}/*WDI_UpdateBeaconParamsReq*/
6218
6219/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006220 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 wishes to update the Beacon template used by HW.
6222 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6223 message to the lower RIVA sub-system if DAL is in state
6224 STARTED.
6225
6226 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006227 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006228
6229 WDI_PostAssocReq must have been called.
6230
Jeff Johnsone7245742012-09-05 17:12:55 -07006231 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006232 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006233
Jeff Johnson295189b2012-06-20 16:38:30 -07006234 wdiSendBeaconParamsRspCb: callback for passing back the
6235 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006236
Jeff Johnson295189b2012-06-20 16:38:30 -07006237 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006238 callback
6239
Jeff Johnson295189b2012-06-20 16:38:30 -07006240 @see WDI_PostAssocReq
6241 @return Result of the function call
6242*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006243WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006244WDI_SendBeaconParamsReq
6245(
6246 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6247 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6248 void* pUserData
6249)
6250{
6251 WDI_EventInfoType wdiEventData;
6252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6253
6254 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006255 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006256 ------------------------------------------------------------------------*/
6257 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6258 {
6259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6260 "WDI API call before module is initialized - Fail request");
6261
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 }
6264
6265 /*------------------------------------------------------------------------
6266 Fill in Event data and post to the Main FSM
6267 ------------------------------------------------------------------------*/
6268 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 wdiEventData.pEventData = pwdiSendBeaconParams;
6270 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6271 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006272 wdiEventData.pUserData = pUserData;
6273
6274 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6275
6276}/*WDI_SendBeaconParamsReq*/
6277
6278/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006279 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006280 upper MAC wants to update the probe response template to
6281 be transmitted as Soft AP
6282 Upon the call of this API the WLAN DAL will
6283 pack and send the probe rsp template message to the
6284 lower RIVA sub-system if DAL is in state STARTED.
6285
6286 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006287 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006288
6289
Jeff Johnsone7245742012-09-05 17:12:55 -07006290 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006291 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006292
Jeff Johnson295189b2012-06-20 16:38:30 -07006293 wdiSendBeaconParamsRspCb: callback for passing back the
6294 response of the Send Beacon Params operation received
6295 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006296
Jeff Johnson295189b2012-06-20 16:38:30 -07006297 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006298 callback
6299
Jeff Johnson295189b2012-06-20 16:38:30 -07006300 @see WDI_AddBAReq
6301 @return Result of the function call
6302*/
6303
Jeff Johnsone7245742012-09-05 17:12:55 -07006304WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006305WDI_UpdateProbeRspTemplateReq
6306(
6307 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6308 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6309 void* pUserData
6310)
6311{
6312 WDI_EventInfoType wdiEventData;
6313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6314
6315 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006316 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006317 ------------------------------------------------------------------------*/
6318 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6319 {
6320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6321 "WDI API call before module is initialized - Fail request");
6322
Jeff Johnsone7245742012-09-05 17:12:55 -07006323 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006324 }
6325
6326 /*------------------------------------------------------------------------
6327 Fill in Event data and post to the Main FSM
6328 ------------------------------------------------------------------------*/
6329 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006330 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6331 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6332 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 wdiEventData.pUserData = pUserData;
6334
6335 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6336
6337}/*WDI_UpdateProbeRspTemplateReq*/
6338
6339/**
6340 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6341 to the NV memory.
6342
6343
6344 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6345 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006346
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 wdiNvDownloadRspCb: callback for passing back the response of
6348 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006349
Jeff Johnson295189b2012-06-20 16:38:30 -07006350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006351 callback
6352
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 @see WDI_PostAssocReq
6354 @return Result of the function call
6355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006357WDI_NvDownloadReq
6358(
6359 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6360 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6361 void* pUserData
6362)
6363{
6364 WDI_EventInfoType wdiEventData;
6365
6366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006368 ------------------------------------------------------------------------*/
6369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6370 {
6371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6372 "WDI API call before module is initialized - Fail request");
6373
Jeff Johnsone7245742012-09-05 17:12:55 -07006374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006375 }
6376
6377 /*------------------------------------------------------------------------
6378 Fill in Event data and post to the Main FSM
6379 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006380 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6381 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6382 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6383 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006384 wdiEventData.pUserData = pUserData;
6385
6386 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6387
6388}/*WDI_NVDownloadReq*/
6389
Jeff Johnson295189b2012-06-20 16:38:30 -07006390/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006391 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006392 upper MAC wants to send Notice of Absence
6393 Upon the call of this API the WLAN DAL will
6394 pack and send the probe rsp template message to the
6395 lower RIVA sub-system if DAL is in state STARTED.
6396
6397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006399
6400
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006402 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006403
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 wdiSendBeaconParamsRspCb: callback for passing back the
6405 response of the Send Beacon Params operation received
6406 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006407
Jeff Johnson295189b2012-06-20 16:38:30 -07006408 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006409 callback
6410
Jeff Johnson295189b2012-06-20 16:38:30 -07006411 @see WDI_AddBAReq
6412 @return Result of the function call
6413*/
6414WDI_Status
6415WDI_SetP2PGONOAReq
6416(
6417 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6418 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6419 void* pUserData
6420)
6421{
6422 WDI_EventInfoType wdiEventData;
6423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6424
6425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006427 ------------------------------------------------------------------------*/
6428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6429 {
6430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6431 "WDI API call before module is initialized - Fail request");
6432
Jeff Johnsone7245742012-09-05 17:12:55 -07006433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006434 }
6435
6436 /*------------------------------------------------------------------------
6437 Fill in Event data and post to the Main FSM
6438 ------------------------------------------------------------------------*/
6439 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6441 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6442 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006443 wdiEventData.pUserData = pUserData;
6444
6445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6446
6447}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006448
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306449#ifdef FEATURE_WLAN_TDLS
6450/**
6451 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6452 upper MAC wants to send TDLS Link Establish Request Parameters
6453 Upon the call of this API the WLAN DAL will
6454 pack and send the TDLS Link Establish Request message to the
6455 lower RIVA sub-system if DAL is in state STARTED.
6456
6457 In state BUSY this request will be queued. Request won't
6458 be allowed in any other state.
6459
6460
6461 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6462 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6463
6464 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6465 response of the TDLS Link Establish request received
6466 from the device
6467
6468 pUserData: user data will be passed back with the
6469 callback
6470
6471 @see
6472 @return Result of the function call
6473*/
6474WDI_Status
6475WDI_SetTDLSLinkEstablishReq
6476(
6477 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6478 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6479 void* pUserData
6480)
6481{
6482 WDI_EventInfoType wdiEventData;
6483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6484
6485 /*------------------------------------------------------------------------
6486 Sanity Check
6487 ------------------------------------------------------------------------*/
6488 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6489 {
6490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6491 "WDI API call before module is initialized - Fail request");
6492
6493 return WDI_STATUS_E_NOT_ALLOWED;
6494 }
6495
6496 /*------------------------------------------------------------------------
6497 Fill in Event data and post to the Main FSM
6498 ------------------------------------------------------------------------*/
6499 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6500 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6501 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6502 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6503 wdiEventData.pUserData = pUserData;
6504
6505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6506
6507}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306508
6509//tdlsoffchan
6510/**
6511 @brief WDI_SetTDLSChanSwitchReq will be called when the
6512 upper MAC wants to send TDLS Chan Switch Request Parameters
6513 Upon the call of this API the WLAN DAL will
6514 pack and send the TDLS Link Establish Request message to the
6515 lower RIVA sub-system if DAL is in state STARTED.
6516
6517 In state BUSY this request will be queued. Request won't
6518 be allowed in any other state.
6519
6520
6521 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6522 for Link Establishment (Used for TDLS Off Channel ...)
6523
6524 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6525 response of the TDLS Chan Switch request received
6526 from the device
6527
6528 pUserData: user data will be passed back with the
6529 callback
6530
6531 @see
6532 @return Result of the function call
6533*/
6534WDI_Status
6535WDI_SetTDLSChanSwitchReq
6536(
6537 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6538 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6539 void* pUserData
6540)
6541{
6542 WDI_EventInfoType wdiEventData;
6543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6544
6545 /*------------------------------------------------------------------------
6546 Sanity Check
6547 ------------------------------------------------------------------------*/
6548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6549 {
6550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6551 "WDI API call before module is initialized - Fail request");
6552
6553 return WDI_STATUS_E_NOT_ALLOWED;
6554 }
6555
6556 /*------------------------------------------------------------------------
6557 Fill in Event data and post to the Main FSM
6558 ------------------------------------------------------------------------*/
6559 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6560 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6561 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6562 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6563 wdiEventData.pUserData = pUserData;
6564
6565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6566
6567}/*WDI_SetTDLSChanSwitchReq*/
6568
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306569#endif
6570
Jeff Johnson295189b2012-06-20 16:38:30 -07006571/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006572 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006573 UMAC wanted to add STA self while opening any new session
6574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006576
6577
Jeff Johnsone7245742012-09-05 17:12:55 -07006578 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006579 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006580
Jeff Johnson295189b2012-06-20 16:38:30 -07006581 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006582 callback
6583
6584 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006585 @return Result of the function call
6586*/
6587WDI_Status
6588WDI_AddSTASelfReq
6589(
6590 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6591 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6592 void* pUserData
6593)
6594{
6595 WDI_EventInfoType wdiEventData;
6596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6597
6598 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006599 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006600 ------------------------------------------------------------------------*/
6601 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6602 {
6603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6604 "WDI API call before module is initialized - Fail request");
6605
Jeff Johnsone7245742012-09-05 17:12:55 -07006606 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006607 }
6608
6609 /*------------------------------------------------------------------------
6610 Fill in Event data and post to the Main FSM
6611 ------------------------------------------------------------------------*/
6612 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006613 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6614 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6615 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 wdiEventData.pUserData = pUserData;
6617
6618 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6619
6620}/*WDI_AddSTASelfReq*/
6621
6622
Jeff Johnsone7245742012-09-05 17:12:55 -07006623#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006624/**
6625 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6626 the device of a successful add TSpec negotiation. HW
6627 needs to receive the TSpec Info from the UMAC in order
6628 to configure properly the QoS data traffic. Upon the
6629 call of this API the WLAN DAL will pack and send a HAL
6630 Add TS request message to the lower RIVA sub-system if
6631 DAL is in state STARTED.
6632
6633 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006634 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006635
6636 WDI_PostAssocReq must have been called.
6637
6638 @param wdiAddTsReqParams: the add TS parameters as specified by
6639 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006640
Jeff Johnson295189b2012-06-20 16:38:30 -07006641 wdiAddTsRspCb: callback for passing back the response of
6642 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006643
Jeff Johnson295189b2012-06-20 16:38:30 -07006644 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006645 callback
6646
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 @see WDI_PostAssocReq
6648 @return Result of the function call
6649*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006650WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006651WDI_AggrAddTSReq
6652(
6653 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6654 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6655 void* pUserData
6656)
6657{
6658 WDI_EventInfoType wdiEventData;
6659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6660
6661 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006662 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006663 ------------------------------------------------------------------------*/
6664 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6665 {
6666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6667 "WDI API call before module is initialized - Fail request");
6668
Jeff Johnsone7245742012-09-05 17:12:55 -07006669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006670 }
6671
6672 /*------------------------------------------------------------------------
6673 Fill in Event data and post to the Main FSM
6674 ------------------------------------------------------------------------*/
6675 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006676 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6677 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6678 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 wdiEventData.pUserData = pUserData;
6680
6681 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6682
6683}/*WDI_AggrAddTSReq*/
6684
6685#endif /* WLAN_FEATURE_VOWIFI_11R */
6686
Jeff Johnson295189b2012-06-20 16:38:30 -07006687/**
6688 @brief WDI_FTMCommandReq
6689 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006690
6691 @param ftmCommandReq: FTM Command Body
6692 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006694
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 @see
6696 @return Result of the function call
6697*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006698WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006699WDI_FTMCommandReq
6700(
6701 WDI_FTMCommandReqType *ftmCommandReq,
6702 WDI_FTMCommandRspCb ftmCommandRspCb,
6703 void *pUserData
6704)
6705{
6706 WDI_EventInfoType wdiEventData;
6707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6708
6709 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006710 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006711 ------------------------------------------------------------------------*/
6712 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6713 {
6714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6715 "WDI API call before module is initialized - Fail request");
6716
Jeff Johnsone7245742012-09-05 17:12:55 -07006717 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 }
6719
6720 /*------------------------------------------------------------------------
6721 Fill in Event data and post to the Main FSM
6722 ------------------------------------------------------------------------*/
6723 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6724 wdiEventData.pEventData = (void *)ftmCommandReq;
6725 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6726 wdiEventData.pCBfnc = ftmCommandRspCb;
6727 wdiEventData.pUserData = pUserData;
6728
6729 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6730}
Jeff Johnson295189b2012-06-20 16:38:30 -07006731/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006732 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006733
6734 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006735 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006736
6737
6738 @param pwdiResumeReqParams: as specified by
6739 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006740
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 wdiResumeReqRspCb: callback for passing back the response of
6742 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006743
Jeff Johnson295189b2012-06-20 16:38:30 -07006744 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006745 callback
6746
6747 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006748 @return Result of the function call
6749*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006750WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006751WDI_HostResumeReq
6752(
6753 WDI_ResumeParamsType* pwdiResumeReqParams,
6754 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6755 void* pUserData
6756)
6757{
6758 WDI_EventInfoType wdiEventData;
6759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6760
6761 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006762 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006763 ------------------------------------------------------------------------*/
6764 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6765 {
6766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6767 "WDI API call before module is initialized - Fail request");
6768
Jeff Johnsone7245742012-09-05 17:12:55 -07006769 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006770 }
6771
6772 /*------------------------------------------------------------------------
6773 Fill in Event data and post to the Main FSM
6774 ------------------------------------------------------------------------*/
6775 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006776 wdiEventData.pEventData = pwdiResumeReqParams;
6777 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6778 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006779 wdiEventData.pUserData = pUserData;
6780
6781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6782
6783}/*WDI_HostResumeReq*/
6784
6785/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006786 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006787
6788 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006789 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006790
6791
6792 @param pwdiDelStaSelfReqParams: as specified by
6793 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006794
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 wdiDelStaSelfRspCb: callback for passing back the response of
6796 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006797
Jeff Johnson295189b2012-06-20 16:38:30 -07006798 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006799 callback
6800
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 @see WDI_PostAssocReq
6802 @return Result of the function call
6803*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006804WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006805WDI_DelSTASelfReq
6806(
6807 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6808 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6809 void* pUserData
6810)
6811{
6812 WDI_EventInfoType wdiEventData;
6813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6814
6815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006816 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006817 ------------------------------------------------------------------------*/
6818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6819 {
6820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6821 "WDI API call before module is initialized - Fail request");
6822
Jeff Johnsone7245742012-09-05 17:12:55 -07006823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006824 }
6825
6826 /*------------------------------------------------------------------------
6827 Fill in Event data and post to the Main FSM
6828 ------------------------------------------------------------------------*/
6829 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6831 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6832 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006833 wdiEventData.pUserData = pUserData;
6834
6835 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6836
6837}/*WDI_AggrAddTSReq*/
6838
6839/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006840 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6841 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 Upon the call of this API the WLAN DAL will pack
6843 and send a HAL Set Tx Per Tracking request message to the
6844 lower RIVA sub-system if DAL is in state STARTED.
6845
6846 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006847 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006848
Jeff Johnsone7245742012-09-05 17:12:55 -07006849 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006850 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006851
Jeff Johnson295189b2012-06-20 16:38:30 -07006852 pwdiSetTxPerTrackingRspCb: callback for passing back the
6853 response of the set Tx PER Tracking configurations operation received
6854 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006855
Jeff Johnson295189b2012-06-20 16:38:30 -07006856 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006857 callback
6858
Jeff Johnson295189b2012-06-20 16:38:30 -07006859 @return Result of the function call
6860*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006861WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006862WDI_SetTxPerTrackingReq
6863(
6864 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6865 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6866 void* pUserData
6867)
6868{
6869 WDI_EventInfoType wdiEventData;
6870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6871
6872 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 ------------------------------------------------------------------------*/
6875 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6876 {
6877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6878 "WDI API call before module is initialized - Fail request");
6879
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 }
6882
6883 /*------------------------------------------------------------------------
6884 Fill in Event data and post to the Main FSM
6885 ------------------------------------------------------------------------*/
6886 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006887 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 wdiEventData.pUserData = pUserData;
6891
6892 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6893
6894}/*WDI_SetTxPerTrackingReq*/
6895
6896/**
6897 @brief WDI_SetTmLevelReq
6898 If HW Thermal condition changed, driver should react based on new
6899 HW thermal condition.
6900
6901 @param pwdiSetTmLevelReq: New thermal condition information
6902
6903 pwdiSetTmLevelRspCb: callback
6904
6905 usrData: user data will be passed back with the
6906 callback
6907
6908 @return Result of the function call
6909*/
6910WDI_Status
6911WDI_SetTmLevelReq
6912(
6913 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6914 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6915 void *usrData
6916)
6917{
6918 WDI_EventInfoType wdiEventData;
6919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6920
6921 /*------------------------------------------------------------------------
6922 Sanity Check
6923 ------------------------------------------------------------------------*/
6924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6925 {
6926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6927 "WDI API call before module is initialized - Fail request");
6928
6929 return WDI_STATUS_E_NOT_ALLOWED;
6930 }
6931
6932 /*------------------------------------------------------------------------
6933 Fill in Event data and post to the Main FSM
6934 ------------------------------------------------------------------------*/
6935 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6936 wdiEventData.pEventData = pwdiSetTmLevelReq;
6937 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6938 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6939 wdiEventData.pUserData = usrData;
6940
6941 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6942}
6943
6944/**
6945 @brief WDI_HostSuspendInd
6946
6947 Suspend Indication from the upper layer will be sent
6948 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006949
Jeff Johnson295189b2012-06-20 16:38:30 -07006950 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006951
6952 @see
6953
Jeff Johnson295189b2012-06-20 16:38:30 -07006954 @return Status of the request
6955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006957WDI_HostSuspendInd
6958(
6959 WDI_SuspendParamsType* pwdiSuspendIndParams
6960)
6961{
6962
6963 WDI_EventInfoType wdiEventData;
6964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6965
6966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006968 ------------------------------------------------------------------------*/
6969 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6970 {
6971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6972 "WDI API call before module is initialized - Fail request");
6973
Jeff Johnsone7245742012-09-05 17:12:55 -07006974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 }
6976
6977 /*------------------------------------------------------------------------
6978 Fill in Event data and post to the Main FSM
6979 ------------------------------------------------------------------------*/
6980 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 wdiEventData.pEventData = pwdiSuspendIndParams;
6982 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6983 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 wdiEventData.pUserData = NULL;
6985
6986 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6987
6988}/*WDI_HostSuspendInd*/
6989
6990/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006991 @brief WDI_TrafficStatsInd
6992 Traffic Stats from the upper layer will be sent
6993 down to HAL
6994
6995 @param WDI_TrafficStatsIndType
6996
6997 @see
6998
6999 @return Status of the request
7000*/
7001WDI_Status
7002WDI_TrafficStatsInd
7003(
7004 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
7005)
7006{
7007
7008 WDI_EventInfoType wdiEventData;
7009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7010
7011 /*------------------------------------------------------------------------
7012 Sanity Check
7013 ------------------------------------------------------------------------*/
7014 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7015 {
7016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7017 "WDI API call before module is initialized - Fail request");
7018
7019 return WDI_STATUS_E_NOT_ALLOWED;
7020 }
7021
7022 /*------------------------------------------------------------------------
7023 Fill in Event data and post to the Main FSM
7024 ------------------------------------------------------------------------*/
7025 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
7026 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
7027 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
7028 wdiEventData.pCBfnc = NULL;
7029 wdiEventData.pUserData = NULL;
7030
7031 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7032
7033}/*WDI_TrafficStatsInd*/
7034
Chet Lanctot186b5732013-03-18 10:26:30 -07007035#ifdef WLAN_FEATURE_11W
7036/**
7037 @brief WDI_ExcludeUnencryptedInd
7038 Register with HAL to receive/drop unencrypted frames
7039
7040 @param WDI_ExcludeUnencryptIndType
7041
7042 @see
7043
7044 @return Status of the request
7045*/
7046WDI_Status
7047WDI_ExcludeUnencryptedInd
7048(
7049 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7050)
7051{
7052
7053 WDI_EventInfoType wdiEventData;
7054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7055
7056 /*------------------------------------------------------------------------
7057 Sanity Check
7058 ------------------------------------------------------------------------*/
7059 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7060 {
7061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7062 "WDI API call before module is initialized - Fail request");
7063
7064 return WDI_STATUS_E_NOT_ALLOWED;
7065 }
7066
7067 /*------------------------------------------------------------------------
7068 Fill in Event data and post to the Main FSM
7069 ------------------------------------------------------------------------*/
7070 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7071 wdiEventData.pEventData = pWdiExcUnencParams;
7072 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7073 wdiEventData.pCBfnc = NULL;
7074 wdiEventData.pUserData = NULL;
7075
7076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7077
7078}/*WDI_TrafficStatsInd*/
7079#endif
7080
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007081/**
Yue Mab9c86f42013-08-14 15:59:08 -07007082 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7083
7084 @param addPeriodicTxPtrnParams: Add Pattern parameters
7085
7086 @see
7087
7088 @return Status of the request
7089*/
7090WDI_Status
7091WDI_AddPeriodicTxPtrnInd
7092(
7093 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7094)
7095{
7096 WDI_EventInfoType wdiEventData;
7097
7098 /*-------------------------------------------------------------------------
7099 Sanity Check
7100 ------------------------------------------------------------------------*/
7101 if (eWLAN_PAL_FALSE == gWDIInitialized)
7102 {
7103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7104 "WDI API call before module is initialized - Fail request!");
7105
7106 return WDI_STATUS_E_NOT_ALLOWED;
7107 }
7108
7109 /*-------------------------------------------------------------------------
7110 Fill in Event data and post to the Main FSM
7111 ------------------------------------------------------------------------*/
7112 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7113 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7114 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7115 wdiEventData.pCBfnc = NULL;
7116 wdiEventData.pUserData = NULL;
7117
7118 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7119}
7120
7121/**
7122 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7123
7124 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7125
7126 @see
7127
7128 @return Status of the request
7129*/
7130WDI_Status
7131WDI_DelPeriodicTxPtrnInd
7132(
7133 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7134)
7135{
7136 WDI_EventInfoType wdiEventData;
7137
7138 /*-------------------------------------------------------------------------
7139 Sanity Check
7140 ------------------------------------------------------------------------*/
7141 if (eWLAN_PAL_FALSE == gWDIInitialized)
7142 {
7143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7144 "WDI API call before module is initialized - Fail request!");
7145
7146 return WDI_STATUS_E_NOT_ALLOWED;
7147 }
7148
7149 /*-------------------------------------------------------------------------
7150 Fill in Event data and post to the Main FSM
7151 ------------------------------------------------------------------------*/
7152 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7153 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7154 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7155 wdiEventData.pCBfnc = NULL;
7156 wdiEventData.pUserData = NULL;
7157
7158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7159}
7160
7161/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007162 @brief WDI_HALDumpCmdReq
7163 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007164
7165 @param halDumpCmdReqParams: Hal Dump Command Body
7166 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007167 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007168
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 @see
7170 @return Result of the function call
7171*/
7172WDI_Status WDI_HALDumpCmdReq
7173(
7174 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7175 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7176 void *pUserData
7177)
7178{
7179 WDI_EventInfoType wdiEventData;
7180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7181
7182 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007183 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007184 ------------------------------------------------------------------------*/
7185 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7186 {
7187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7188 "WDI API call before module is initialized - Fail request");
7189
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 }
7192
7193 /*------------------------------------------------------------------------
7194 Fill in Event data and post to the Main FSM
7195 ------------------------------------------------------------------------*/
7196 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7197 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7198 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7199 wdiEventData.pCBfnc = halDumpCmdRspCb;
7200 wdiEventData.pUserData = pUserData;
7201
7202 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7203}
7204
Jeff Johnsone7245742012-09-05 17:12:55 -07007205/*============================================================================
7206
Jeff Johnson295189b2012-06-20 16:38:30 -07007207 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007208
Jeff Johnson295189b2012-06-20 16:38:30 -07007209 ============================================================================*/
7210
7211/**
7212 @brief Main FSM Start function for all states except BUSY
7213
Jeff Johnsone7245742012-09-05 17:12:55 -07007214
7215 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 wdiEV: event posted to the main DAL FSM
7217 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007218 structure
7219
Jeff Johnson295189b2012-06-20 16:38:30 -07007220 @see
7221 @return Result of the function call
7222*/
7223WDI_Status
7224WDI_PostMainEvent
7225(
Jeff Johnsone7245742012-09-05 17:12:55 -07007226 WDI_ControlBlockType* pWDICtx,
7227 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007228 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007229)
7230{
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 WDI_Status wdiStatus;
7232 WDI_MainFuncType pfnWDIMainEvHdlr;
7233 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307234 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7236
7237 /*-------------------------------------------------------------------------
7238 Sanity check
7239 -------------------------------------------------------------------------*/
7240 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7241 ( wdiEV >= WDI_MAX_EVENT ))
7242 {
7243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7244 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7245 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 }
7248
7249 /*Access to the global state must be locked */
7250 wpalMutexAcquire(&pWDICtx->wptMutex);
7251
7252 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007253 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007254
7255 wdiOldState = pWDICtx->uGlobalState;
7256
7257 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007258 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7259 response comes from CCPU for the request sent by host:
7260 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 -07007261 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 -07007262 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007263 CCPU:
7264 don't change the state */
7265 if ( WDI_RESPONSE_EVENT != wdiEV)
7266 {
7267 /*Transition to BUSY State - the request is now being processed by the FSM,
7268 if the request fails we shall transition back to the old state, if not
7269 the request will manage its own state transition*/
7270 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7271 }
7272 /* If the state function associated with the EV is NULL it means that this
7273 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007275 {
7276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007277 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007278 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007279 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007280 }
7281 else
7282 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307283 if (!(failCnt & 0xF))
7284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007286 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307287 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 }
7290
7291 /* If a request handles itself well it will end up in a success or in a
7292 pending
7293 Success - means that the request was processed and the proper state
7294 transition already occurred or will occur when the resp is received
7295 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007296
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 Pending - means the request could not be processed at this moment in time
7298 because the FSM was already busy so no state transition or dequeueing
7299 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007300
Jeff Johnson295189b2012-06-20 16:38:30 -07007301 Success for synchronous case means that the transition may occur and
7302 processing of pending requests may continue - so it should go through
7303 and restores the state and continue processing queued requests*/
7304 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7305 ( WDI_STATUS_PENDING != wdiStatus ))
7306 {
7307 if ( WDI_RESPONSE_EVENT != wdiEV)
7308 {
7309 /*The request has failed or could not be processed - transition back to
7310 the old state - check to see if anything was queued and try to execute
7311 The dequeue logic should post a message to a thread and return - no
7312 actual processing can occur */
7313 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7314 }
7315 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007316
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 }
7318
7319 /* we have completed processing the event */
7320 wpalMutexRelease(&pWDICtx->wptMutex);
7321
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007323
7324}/*WDI_PostMainEvent*/
7325
7326
7327/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007329--------------------------------------------------------------------------*/
7330/**
7331 @brief Main FSM Start function for all states except BUSY
7332
Jeff Johnsone7245742012-09-05 17:12:55 -07007333
7334 @param pWDICtx: pointer to the WLAN DAL context
7335 pEventData: pointer to the event information structure
7336
Jeff Johnson295189b2012-06-20 16:38:30 -07007337 @see
7338 @return Result of the function call
7339*/
7340WDI_Status
7341WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007342(
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 WDI_ControlBlockType* pWDICtx,
7344 WDI_EventInfoType* pEventData
7345)
7346{
7347
7348 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 ----------------------------------------------------------------------*/
7351 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7352 {
7353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007354 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007355 pWDICtx, pEventData);
7356 return WDI_STATUS_E_FAILURE;
7357 }
7358
7359 wpalMutexAcquire(&pWDICtx->wptMutex);
7360
7361 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 ----------------------------------------------------------------------*/
7364 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7365 {
7366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7367 "Control Transport not yet Open - queueing the request");
7368
7369 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007370 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007371
7372 wpalMutexRelease(&pWDICtx->wptMutex);
7373 return WDI_STATUS_PENDING;
7374 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007375
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 wpalMutexRelease(&pWDICtx->wptMutex);
7377
7378 /*Return Success*/
7379 return WDI_ProcessRequest( pWDICtx, pEventData );
7380
7381}/*WDI_MainStart*/
7382
7383/**
7384 @brief Main FSM Response function for state INIT
7385
Jeff Johnsone7245742012-09-05 17:12:55 -07007386
7387 @param pWDICtx: pointer to the WLAN DAL context
7388 pEventData: pointer to the event information structure
7389
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 @see
7391 @return Result of the function call
7392*/
7393WDI_Status
7394WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007395(
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 WDI_ControlBlockType* pWDICtx,
7397 WDI_EventInfoType* pEventData
7398)
7399{
7400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007404
7405 /*Return Success*/
7406 return WDI_STATUS_E_NOT_ALLOWED;
7407}/* WDI_MainRspInit */
7408
7409/**
7410 @brief Main FSM Close function for all states except BUSY
7411
Jeff Johnsone7245742012-09-05 17:12:55 -07007412
7413 @param pWDICtx: pointer to the WLAN DAL context
7414 pEventData: pointer to the event information structure
7415
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 @see
7417 @return Result of the function call
7418*/
7419WDI_Status
7420WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007421(
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 WDI_ControlBlockType* pWDICtx,
7423 WDI_EventInfoType* pEventData
7424)
7425{
7426
7427 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 ----------------------------------------------------------------------*/
7430 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7431 {
7432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007433 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007434 pWDICtx, pEventData);
7435 return WDI_STATUS_E_FAILURE;
7436 }
7437
7438 /*Return Success*/
7439 return WDI_ProcessRequest( pWDICtx, pEventData );
7440
7441}/*WDI_MainClose*/
7442/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007444--------------------------------------------------------------------------*/
7445/**
7446 @brief Main FSM Start function for state STARTED
7447
Jeff Johnsone7245742012-09-05 17:12:55 -07007448
7449 @param pWDICtx: pointer to the WLAN DAL context
7450 pEventData: pointer to the event information structure
7451
Jeff Johnson295189b2012-06-20 16:38:30 -07007452 @see
7453 @return Result of the function call
7454*/
7455WDI_Status
7456WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007457(
Jeff Johnson295189b2012-06-20 16:38:30 -07007458 WDI_ControlBlockType* pWDICtx,
7459 WDI_EventInfoType* pEventData
7460)
7461{
7462 WDI_StartRspCb wdiStartRspCb = NULL;
7463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7464
7465 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 ----------------------------------------------------------------------*/
7468 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7469 {
7470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007471 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 pWDICtx, pEventData);
7473 return WDI_STATUS_E_FAILURE;
7474 }
7475
7476 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 ----------------------------------------------------------------------*/
7479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007481
7482 wpalMutexAcquire(&pWDICtx->wptMutex);
7483
7484 /*Transition back to started because the post function transitioned us to
7485 busy*/
7486 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7487
7488 /*Check to see if any request is pending*/
7489 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007490
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 wpalMutexRelease(&pWDICtx->wptMutex);
7492
7493 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7495
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307497 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007498
7499 /*Return Success*/
7500 return WDI_STATUS_SUCCESS;
7501
7502}/*WDI_MainStartStarted*/
7503
7504/**
7505 @brief Main FSM Stop function for state STARTED
7506
Jeff Johnsone7245742012-09-05 17:12:55 -07007507
7508 @param pWDICtx: pointer to the WLAN DAL context
7509 pEventData: pointer to the event information structure
7510
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 @see
7512 @return Result of the function call
7513*/
7514WDI_Status
7515WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007516(
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 WDI_ControlBlockType* pWDICtx,
7518 WDI_EventInfoType* pEventData
7519)
7520{
7521 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 ----------------------------------------------------------------------*/
7524 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7525 {
7526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007527 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 pWDICtx, pEventData);
7529 return WDI_STATUS_E_FAILURE;
7530 }
7531
7532 /*State at this point is BUSY - because we enter this state before posting
7533 an event to the FSM in order to prevent potential race conditions*/
7534
7535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7536 "Processing stop request in FSM");
7537
7538 /*Return Success*/
7539 return WDI_ProcessRequest( pWDICtx, pEventData );
7540
7541}/*WDI_MainStopStarted*/
7542/**
7543 @brief Main FSM Request function for state started
7544
Jeff Johnsone7245742012-09-05 17:12:55 -07007545
7546 @param pWDICtx: pointer to the WLAN DAL context
7547 pEventData: pointer to the event information structure
7548
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 @see
7550 @return Result of the function call
7551*/
7552WDI_Status
7553WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007554(
Jeff Johnson295189b2012-06-20 16:38:30 -07007555 WDI_ControlBlockType* pWDICtx,
7556 WDI_EventInfoType* pEventData
7557)
7558{
7559
7560 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 ----------------------------------------------------------------------*/
7563 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7564 {
7565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007566 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 pWDICtx, pEventData);
7568 return WDI_STATUS_E_FAILURE;
7569 }
7570
7571 /*State at this point is BUSY - because we enter this state before posting
7572 an event to the FSM in order to prevent potential race conditions*/
7573
7574 /*Return Success*/
7575 return WDI_ProcessRequest( pWDICtx, pEventData );
7576
7577}/*WDI_MainReqStarted*/
7578
7579/**
7580 @brief Main FSM Response function for all states except INIT
7581
Jeff Johnsone7245742012-09-05 17:12:55 -07007582
7583 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007585
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 @see
7587 @return Result of the function call
7588*/
7589WDI_Status
7590WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007591(
Jeff Johnson295189b2012-06-20 16:38:30 -07007592 WDI_ControlBlockType* pWDICtx,
7593 WDI_EventInfoType* pEventData
7594)
7595{
Jeff Johnsone7245742012-09-05 17:12:55 -07007596 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 wpt_boolean expectedResponse;
7598
7599 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007601 ----------------------------------------------------------------------*/
7602 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7603 {
7604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007605 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 pWDICtx, pEventData);
7607 return WDI_STATUS_E_FAILURE;
7608 }
7609
7610 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7611 {
7612 /* we received an expected response */
7613 expectedResponse = eWLAN_PAL_TRUE;
7614
7615 /*We expect that we will transition to started after this processing*/
7616 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7617
7618 /* we are no longer expecting a response */
7619 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7620 }
7621 else
7622 {
7623 /* we received an indication or unexpected response */
7624 expectedResponse = eWLAN_PAL_FALSE;
7625 /* for indications no need to update state from what it is right
7626 now, unless it explicitly does it in the indication handler (say
7627 for device failure ind) */
7628 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7629 }
7630
7631 /*Process the response and indication */
7632 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7633
7634 /*Lock the CB as we are about to do a state transition*/
7635 wpalMutexAcquire(&pWDICtx->wptMutex);
7636
7637 /*Transition to the expected state after the response processing
7638 - this should always be started state with the following exceptions:
7639 1. processing of a failed start response
7640 2. device failure detected while processing response
7641 3. stop response received*/
7642 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007643
Jeff Johnson295189b2012-06-20 16:38:30 -07007644 /*Dequeue request that may have been queued while we were waiting for the
7645 response */
7646 if ( expectedResponse )
7647 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007648 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007649 }
7650
7651 wpalMutexRelease(&pWDICtx->wptMutex);
7652
7653 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007654 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007655
7656}/*WDI_MainRsp*/
7657
7658/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007660--------------------------------------------------------------------------*/
7661/**
7662 @brief Main FSM Stop function for state STOPPED
7663
Jeff Johnsone7245742012-09-05 17:12:55 -07007664
7665 @param pWDICtx: pointer to the WLAN DAL context
7666 pEventData: pointer to the event information structure
7667
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 @see
7669 @return Result of the function call
7670*/
7671WDI_Status
7672WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007673(
Jeff Johnson295189b2012-06-20 16:38:30 -07007674 WDI_ControlBlockType* pWDICtx,
7675 WDI_EventInfoType* pEventData
7676)
7677{
7678 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 ----------------------------------------------------------------------*/
7681 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7682 {
7683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007684 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 pWDICtx, pEventData);
7686 return WDI_STATUS_E_FAILURE;
7687 }
7688
7689 /*We should normally not get a STOP request if we are already stopped
7690 since we should normally be stopped by the UMAC. However in some
7691 error situations we put ourselves in the stopped state without the
7692 UMAC knowing, so when we get a STOP request in this state we still
7693 process it since we need to clean up the underlying state */
7694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7695 "Processing stop request while stopped in FSM");
7696
7697 /*Return Success*/
7698 return WDI_ProcessRequest( pWDICtx, pEventData );
7699
7700}/*WDI_MainStopStopped*/
7701
7702/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007703 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007704--------------------------------------------------------------------------*/
7705/**
7706 @brief Main FSM Start function for state BUSY
7707
Jeff Johnsone7245742012-09-05 17:12:55 -07007708
7709 @param pWDICtx: pointer to the WLAN DAL context
7710 pEventData: pointer to the event information structure
7711
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 @see
7713 @return Result of the function call
7714*/
7715WDI_Status
7716WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007717(
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 WDI_ControlBlockType* pWDICtx,
7719 WDI_EventInfoType* pEventData
7720)
7721{
7722 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007723 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 ----------------------------------------------------------------------*/
7725 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7726 {
7727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007728 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 pWDICtx, pEventData);
7730 return WDI_STATUS_E_FAILURE;
7731 }
7732
7733 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007734 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 ----------------------------------------------------------------------*/
7736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7737 "WDI Busy state - queue start request");
7738
7739 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007741
7742 /*Return Success*/
7743 return WDI_STATUS_PENDING;
7744}/*WDI_MainStartBusy*/
7745
7746/**
7747 @brief Main FSM Stop function for state BUSY
7748
Jeff Johnsone7245742012-09-05 17:12:55 -07007749
7750 @param pWDICtx: pointer to the WLAN DAL context
7751 pEventData: pointer to the event information structure
7752
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 @see
7754 @return Result of the function call
7755*/
7756WDI_Status
7757WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007758(
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 WDI_ControlBlockType* pWDICtx,
7760 WDI_EventInfoType* pEventData
7761)
7762{
7763 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 ----------------------------------------------------------------------*/
7766 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7767 {
7768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007769 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 pWDICtx, pEventData);
7771 return WDI_STATUS_E_FAILURE;
7772 }
7773
7774 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 ----------------------------------------------------------------------*/
7777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7778 "WDI Busy state - queue stop request");
7779
Jeff Johnsone7245742012-09-05 17:12:55 -07007780 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007782
Jeff Johnson295189b2012-06-20 16:38:30 -07007783}/*WDI_MainStopBusy*/
7784
7785/**
7786 @brief Main FSM Request function for state BUSY
7787
Jeff Johnsone7245742012-09-05 17:12:55 -07007788
7789 @param pWDICtx: pointer to the WLAN DAL context
7790 pEventData: pointer to the event information structure
7791
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 @see
7793 @return Result of the function call
7794*/
7795WDI_Status
7796WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007797(
Jeff Johnson295189b2012-06-20 16:38:30 -07007798 WDI_ControlBlockType* pWDICtx,
7799 WDI_EventInfoType* pEventData
7800)
7801{
7802 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007804 ----------------------------------------------------------------------*/
7805 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7806 {
7807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007808 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 pWDICtx, pEventData);
7810 return WDI_STATUS_E_FAILURE;
7811 }
7812
7813 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007815 ----------------------------------------------------------------------*/
7816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7817 "WDI Busy state - queue request %d because waiting for response %d",
7818 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7819
Jeff Johnsone7245742012-09-05 17:12:55 -07007820 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007822
Jeff Johnson295189b2012-06-20 16:38:30 -07007823}/*WDI_MainReqBusy*/
7824/**
7825 @brief Main FSM Close function for state BUSY
7826
Jeff Johnsone7245742012-09-05 17:12:55 -07007827
7828 @param pWDICtx: pointer to the WLAN DAL context
7829 pEventData: pointer to the event information structure
7830
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 @see
7832 @return Result of the function call
7833*/
7834WDI_Status
7835WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007836(
Jeff Johnson295189b2012-06-20 16:38:30 -07007837 WDI_ControlBlockType* pWDICtx,
7838 WDI_EventInfoType* pEventData
7839)
7840{
7841 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 ----------------------------------------------------------------------*/
7844 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7845 {
7846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007847 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007848 pWDICtx, pEventData);
7849 return WDI_STATUS_E_FAILURE;
7850 }
7851
7852 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 ----------------------------------------------------------------------*/
7855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7856 "WDI Busy state - queue close request");
7857
Jeff Johnsone7245742012-09-05 17:12:55 -07007858 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007859 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007860
Jeff Johnson295189b2012-06-20 16:38:30 -07007861}/*WDI_MainCloseBusy*/
7862
7863/**
7864 @brief Main FSM Shutdown function for INIT & STARTED states
7865
7866
7867 @param pWDICtx: pointer to the WLAN DAL context
7868 pEventData: pointer to the event information structure
7869
7870 @see
7871 @return Result of the function call
7872*/
7873WDI_Status
7874WDI_MainShutdown
7875(
7876 WDI_ControlBlockType* pWDICtx,
7877 WDI_EventInfoType* pEventData
7878)
7879{
7880 /*--------------------------------------------------------------------
7881 Sanity Check
7882 ----------------------------------------------------------------------*/
7883 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7884 {
7885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007886 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 pWDICtx, pEventData);
7888 return WDI_STATUS_E_FAILURE;
7889 }
7890
7891 /*State at this point is BUSY - because we enter this state before posting
7892 an event to the FSM in order to prevent potential race conditions*/
7893
7894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7895 "Processing shutdown request in FSM");
7896
7897 /*Return Success*/
7898 return WDI_ProcessRequest( pWDICtx, pEventData );
7899
7900}/*WDI_MainShutdown*/
7901
7902/**
7903 @brief Main FSM Shutdown function for BUSY state
7904
7905
7906 @param pWDICtx: pointer to the WLAN DAL context
7907 pEventData: pointer to the event information structure
7908
7909 @see
7910 @return Result of the function call
7911*/
7912WDI_Status
7913WDI_MainShutdownBusy
7914(
7915 WDI_ControlBlockType* pWDICtx,
7916 WDI_EventInfoType* pEventData
7917)
7918{
7919 /*--------------------------------------------------------------------
7920 Sanity Check
7921 ----------------------------------------------------------------------*/
7922 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7923 {
7924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007925 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 pWDICtx, pEventData);
7927 return WDI_STATUS_E_FAILURE;
7928 }
7929
7930 /* If you are waiting for a HAL response at this stage, you are not
7931 * going to get it. Riva is already shutdown/crashed.
7932 */
7933 wpalTimerStop(&gWDICb.wptResponseTimer);
7934
7935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7936 "Processing shutdown request in FSM: Busy state ");
7937
7938 return WDI_ProcessRequest( pWDICtx, pEventData );
7939
7940}/*WDI_MainShutdownBusy*/
7941
7942
Jeff Johnsone7245742012-09-05 17:12:55 -07007943/*=======================================================================
7944
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007946
Jeff Johnson295189b2012-06-20 16:38:30 -07007947*=======================================================================*/
7948
7949/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007951========================================================================*/
7952/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007955
7956 @param pWDICtx: pointer to the WLAN DAL context
7957 pEventData: pointer to the event information structure
7958
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 @see
7960 @return Result of the function call
7961*/
7962WDI_Status
7963WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007964(
Jeff Johnson295189b2012-06-20 16:38:30 -07007965 WDI_ControlBlockType* pWDICtx,
7966 WDI_EventInfoType* pEventData
7967)
7968{
7969 WDI_StartReqParamsType* pwdiStartParams = NULL;
7970 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 wpt_uint16 usDataOffset = 0;
7973 wpt_uint16 usSendSize = 0;
7974
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 tHalMacStartReqMsg halStartReq;
7976 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7978
7979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 -------------------------------------------------------------------------*/
7982 if (( NULL == pEventData ) ||
7983 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7984 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7985 {
7986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 }
7991
7992 /*-----------------------------------------------------------------------
7993 Get message buffer
7994 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007995 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007996 pwdiStartParams->usConfigBufferLen;
7997
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 usLen,
8000 &pSendBuffer, &usDataOffset, &usSendSize))||
8001 ( usSendSize < (usDataOffset + usLen )))
8002 {
8003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008004 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 pEventData, pwdiStartParams, wdiStartRspCb);
8006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008008 }
8009
8010 /*-----------------------------------------------------------------------
8011 Fill in the message
8012 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 halStartReq.startReqParams.driverType =
8014 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07008015
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 halStartReq.startReqParams.uConfigBufferLen =
8017 pwdiStartParams->usConfigBufferLen;
8018 wpalMemoryCopy( pSendBuffer+usDataOffset,
8019 &halStartReq.startReqParams,
8020 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008021
Jeff Johnsone7245742012-09-05 17:12:55 -07008022 usDataOffset += sizeof(halStartReq.startReqParams);
8023 wpalMemoryCopy( pSendBuffer+usDataOffset,
8024 pwdiStartParams->pConfigBuffer,
8025 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07008026
8027 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008029
8030 /*Save Low Level Ind CB and associated user data - it will be used further
8031 on when an indication is coming from the lower MAC*/
8032 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008034
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008037 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008038 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
8041
Jeff Johnsone7245742012-09-05 17:12:55 -07008042
Jeff Johnson295189b2012-06-20 16:38:30 -07008043}/*WDI_ProcessStartReq*/
8044
8045/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008048
8049 @param pWDICtx: pointer to the WLAN DAL context
8050 pEventData: pointer to the event information structure
8051
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 @see
8053 @return Result of the function call
8054*/
8055WDI_Status
8056WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008057(
Jeff Johnson295189b2012-06-20 16:38:30 -07008058 WDI_ControlBlockType* pWDICtx,
8059 WDI_EventInfoType* pEventData
8060)
8061{
8062 WDI_StopReqParamsType* pwdiStopParams = NULL;
8063 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008064 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 wpt_uint16 usDataOffset = 0;
8066 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07008067 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07008068 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8070
8071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 -------------------------------------------------------------------------*/
8074 if (( NULL == pEventData ) ||
8075 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8076 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8077 {
8078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008081 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 }
8083
8084 /*-----------------------------------------------------------------------
8085 Get message buffer
8086 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 sizeof(halStopReq.stopReqParams),
8089 &pSendBuffer, &usDataOffset, &usSendSize))||
8090 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8091 {
8092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008093 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 pEventData, pwdiStopParams, wdiStopRspCb);
8095 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008096 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 }
8098
8099 /*-----------------------------------------------------------------------
8100 Fill in the message
8101 -----------------------------------------------------------------------*/
8102 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8103 pwdiStopParams->wdiStopReason);
8104
Jeff Johnsone7245742012-09-05 17:12:55 -07008105 wpalMemoryCopy( pSendBuffer+usDataOffset,
8106 &halStopReq.stopReqParams,
8107 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008108
8109 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008110 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008111
8112 /*! TO DO: stop the data services */
8113 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8114 {
8115 /*Stop the STA Table !UT- check this logic again
8116 It is safer to do it here than on the response - because a stop is imminent*/
8117 WDI_STATableStop(pWDICtx);
8118
8119 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008120 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8121 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008122 {
8123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8124 "WDI Init failed to reset power state event");
8125
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008127 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 }
8129 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008130 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8131 if( eWLAN_PAL_STATUS_SUCCESS != status )
8132 {
8133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008134 "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 -08008135 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008136 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008137 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008141 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8142 WDI_SET_POWER_STATE_TIMEOUT);
8143 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008144 {
8145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8146 "WDI Init failed to wait on an event");
8147
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008149 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 }
8151 }
8152
8153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
8158
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008159fail:
8160 // Release the message buffer so we don't leak
8161 wpalMemoryFree(pSendBuffer);
8162
8163failRequest:
8164 //WDA should have failure check to avoid the memory leak
8165 return WDI_STATUS_E_FAILURE;
8166
Jeff Johnson295189b2012-06-20 16:38:30 -07008167}/*WDI_ProcessStopReq*/
8168
8169/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008172
8173 @param pWDICtx: pointer to the WLAN DAL context
8174 pEventData: pointer to the event information structure
8175
Jeff Johnson295189b2012-06-20 16:38:30 -07008176 @see
8177 @return Result of the function call
8178*/
8179WDI_Status
8180WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008181(
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 WDI_ControlBlockType* pWDICtx,
8183 WDI_EventInfoType* pEventData
8184)
8185{
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8188
8189 /*Lock control block for cleanup*/
8190 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008191
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 /*Clear all pending request*/
8193 WDI_ClearPendingRequests(pWDICtx);
8194
8195 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008196 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008197
8198 /* Close Data transport*/
8199 /* FTM mode does not open Data Path */
8200 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8201 {
8202 WDTS_Close(pWDICtx);
8203 }
8204
8205 /*Close the STA Table !UT- check this logic again*/
8206 WDI_STATableClose(pWDICtx);
8207
8208 /*close the PAL */
8209 wptStatus = wpalClose(pWDICtx->pPALContext);
8210 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8211 {
8212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8213 "Failed to wpal Close %d", wptStatus);
8214 WDI_ASSERT(0);
8215 }
8216
8217 /*Transition back to init state*/
8218 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8219
8220 wpalMutexRelease(&pWDICtx->wptMutex);
8221
8222 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008223 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008224
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008226}/*WDI_ProcessCloseReq*/
8227
8228
8229/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008231===========================================================================*/
8232
8233/**
8234 @brief Process Init Scan Request function (called when Main FSM
8235 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008236
8237 @param pWDICtx: pointer to the WLAN DAL context
8238 pEventData: pointer to the event information structure
8239
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 @see
8241 @return Result of the function call
8242*/
8243WDI_Status
8244WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008245(
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 WDI_ControlBlockType* pWDICtx,
8247 WDI_EventInfoType* pEventData
8248)
8249{
8250 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8251 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 wpt_uint16 usDataOffset = 0;
8254 wpt_uint16 usSendSize = 0;
8255 wpt_uint8 i = 0;
8256
8257 tHalInitScanReqMsg halInitScanReqMsg;
8258
Jeff Johnsone7245742012-09-05 17:12:55 -07008259 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 * It shold be removed once host and riva changes are in sync*/
8261 tHalInitScanConReqMsg halInitScanConReqMsg;
8262
8263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8264
8265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008267 -------------------------------------------------------------------------*/
8268 if (( NULL == pEventData ) ||
8269 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8270 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8271 {
8272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 }
8277
8278#if 0
8279 wpalMutexAcquire(&pWDICtx->wptMutex);
8280 /*-----------------------------------------------------------------------
8281 Check to see if SCAN is already in progress - if so reject the req
8282 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008283 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 -----------------------------------------------------------------------*/
8285 if ( pWDICtx->bScanInProgress )
8286 {
8287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8288 "Scan is already in progress - subsequent scan is not allowed"
8289 " until the first scan completes");
8290
8291 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 }
8294
Jeff Johnsone7245742012-09-05 17:12:55 -07008295 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8296 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297
8298 wpalMutexRelease(&pWDICtx->wptMutex);
8299#endif
Viral Modid86bde22012-12-10 13:09:21 -08008300 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 * It shold be removed once host and riva changes are in sync*/
8304 /*-----------------------------------------------------------------------
8305 Get message buffer
8306 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 sizeof(halInitScanConReqMsg.initScanParams),
8309 &pSendBuffer, &usDataOffset, &usSendSize))||
8310 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8311 {
8312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008313 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008314 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 }
8318
8319
8320 /*-----------------------------------------------------------------------
8321 Fill in the message
8322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008324 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8325
8326 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8327 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8328
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008334 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8335
8336 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8337 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8338
Jeff Johnson295189b2012-06-20 16:38:30 -07008339 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8340 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008341
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8344
8345 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8346 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8349 }
8350
Jeff Johnsone7245742012-09-05 17:12:55 -07008351 wpalMemoryCopy( pSendBuffer+usDataOffset,
8352 &halInitScanConReqMsg.initScanParams,
8353 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 }
8355 else
8356 {
8357 /*-----------------------------------------------------------------------
8358 Get message buffer
8359 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 sizeof(halInitScanReqMsg.initScanParams),
8362 &pSendBuffer, &usDataOffset, &usSendSize))||
8363 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8364 {
8365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008366 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008370 }
8371
8372
8373 /*-----------------------------------------------------------------------
8374 Fill in the message
8375 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8378
8379 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8380 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8381
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8388
8389 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8390 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8391
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8394
8395 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8396 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008398 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8399 }
8400
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 wpalMemoryCopy( pSendBuffer+usDataOffset,
8402 &halInitScanReqMsg.initScanParams,
8403 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 }
8405
8406 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408
8409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008412 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8414
8415}/*WDI_ProcessInitScanReq*/
8416
8417/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008419 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008420
8421 @param pWDICtx: pointer to the WLAN DAL context
8422 pEventData: pointer to the event information structure
8423
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 @see
8425 @return Result of the function call
8426*/
8427WDI_Status
8428WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008429(
Jeff Johnson295189b2012-06-20 16:38:30 -07008430 WDI_ControlBlockType* pWDICtx,
8431 WDI_EventInfoType* pEventData
8432)
8433{
8434 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8435 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008436 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008437 wpt_uint16 usDataOffset = 0;
8438 wpt_uint16 usSendSize = 0;
8439
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8442
8443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 -------------------------------------------------------------------------*/
8446 if (( NULL == pEventData ) ||
8447 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8448 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8449 {
8450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 }
8455
8456#if 0
8457 wpalMutexAcquire(&pWDICtx->wptMutex);
8458 /*-----------------------------------------------------------------------
8459 Check to see if SCAN is already in progress - start scan is only
8460 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008463 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008464 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8465 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8466 {
8467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8468 "Scan start not allowed in this state %d %d",
8469 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008470
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 }
8474
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008476
8477 wpalMutexRelease(&pWDICtx->wptMutex);
8478#endif
8479
8480 /*-----------------------------------------------------------------------
8481 Get message buffer
8482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 sizeof(halStartScanReqMsg.startScanParams),
8485 &pSendBuffer, &usDataOffset, &usSendSize))||
8486 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8487 {
8488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008489 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 }
8494
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008497 wpalMemoryCopy( pSendBuffer+usDataOffset,
8498 &halStartScanReqMsg.startScanParams,
8499 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008500
8501 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008503
8504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008505 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8509}/*WDI_ProcessStartScanReq*/
8510
8511
8512/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008515
8516 @param pWDICtx: pointer to the WLAN DAL context
8517 pEventData: pointer to the event information structure
8518
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 @see
8520 @return Result of the function call
8521*/
8522WDI_Status
8523WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008524(
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 WDI_ControlBlockType* pWDICtx,
8526 WDI_EventInfoType* pEventData
8527)
8528{
8529 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8530 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 wpt_uint16 usDataOffset = 0;
8533 wpt_uint16 usSendSize = 0;
8534
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8537
8538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008540 -------------------------------------------------------------------------*/
8541 if (( NULL == pEventData ) ||
8542 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8543 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8544 {
8545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 }
8550
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8552 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 * forwarded to HAL and result in hang*/
8554#if 0
8555 wpalMutexAcquire(&pWDICtx->wptMutex);
8556 /*-----------------------------------------------------------------------
8557 Check to see if SCAN is already in progress - end scan is only
8558 allowed when a scan is ongoing and the state of the scan procedure
8559 is started
8560 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008561 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008562 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8563 {
8564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8565 "End start not allowed in this state %d %d",
8566 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008567
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 }
8571
Jeff Johnsone7245742012-09-05 17:12:55 -07008572 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008573
8574 wpalMutexRelease(&pWDICtx->wptMutex);
8575#endif
8576
8577 /*-----------------------------------------------------------------------
8578 Get message buffer
8579 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008581 sizeof(halEndScanReqMsg.endScanParams),
8582 &pSendBuffer, &usDataOffset, &usSendSize))||
8583 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8584 {
8585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008586 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 }
8591
8592 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8593
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 wpalMemoryCopy( pSendBuffer+usDataOffset,
8595 &halEndScanReqMsg.endScanParams,
8596 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008597
8598 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008600
8601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008604 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8606}/*WDI_ProcessEndScanReq*/
8607
8608
8609/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008611 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008612
8613 @param pWDICtx: pointer to the WLAN DAL context
8614 pEventData: pointer to the event information structure
8615
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 @see
8617 @return Result of the function call
8618*/
8619WDI_Status
8620WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008621(
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 WDI_ControlBlockType* pWDICtx,
8623 WDI_EventInfoType* pEventData
8624)
8625{
8626 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8627 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008628 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 wpt_uint16 usDataOffset = 0;
8630 wpt_uint16 usSendSize = 0;
8631 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008632 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8635
8636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 -------------------------------------------------------------------------*/
8639 if (( NULL == pEventData ) ||
8640 ( NULL == pEventData->pEventData) ||
8641 ( NULL == pEventData->pCBfnc))
8642 {
8643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 }
8648
8649 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8650 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8652 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 * forwarded to HAL and result in hang*/
8654#if 0
8655 wpalMutexAcquire(&pWDICtx->wptMutex);
8656 /*-----------------------------------------------------------------------
8657 Check to see if SCAN is already in progress
8658 Finish scan gets invoked any scan states. ie. abort scan
8659 It should be allowed in any states.
8660 -----------------------------------------------------------------------*/
8661 if ( !pWDICtx->bScanInProgress )
8662 {
8663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8664 "Finish start not allowed in this state %d",
8665 pWDICtx->bScanInProgress );
8666
8667 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008668 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 }
8670
8671 /*-----------------------------------------------------------------------
8672 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008673 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008674 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8676 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 wpalMutexRelease(&pWDICtx->wptMutex);
8678#endif
8679
8680 if ( pWDICtx->bInBmps )
8681 {
8682 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008683 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8684 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8685 {
8686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008687 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008688 WDI_ASSERT(0);
8689 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 }
8691
8692 /*-----------------------------------------------------------------------
8693 Get message buffer
8694 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 sizeof(halFinishScanReqMsg.finishScanParams),
8697 &pSendBuffer, &usDataOffset, &usSendSize))||
8698 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8699 {
8700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008701 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008702 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008705 }
8706
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8709
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8712
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8715
8716 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8717 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8718
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008724 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8725
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8728
8729 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8730 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008731 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008732 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8733 }
8734
8735 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8736 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8737
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 wpalMemoryCopy( pSendBuffer+usDataOffset,
8739 &halFinishScanReqMsg.finishScanParams,
8740 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008741
8742 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008744
8745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8750}/*WDI_ProcessFinishScanReq*/
8751
8752
8753/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008755==========================================================================*/
8756/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 @brief Process BSS Join for a given Session
8758
8759 @param pWDICtx: pointer to the WLAN DAL context
8760 pEventData: pointer to the event information structure
8761
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 @see
8763 @return Result of the function call
8764*/
8765WDI_Status
8766WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008767(
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 WDI_ControlBlockType* pWDICtx,
8769 WDI_JoinReqParamsType* pwdiJoinParams,
8770 WDI_JoinRspCb wdiJoinRspCb,
8771 void* pUserData
8772)
8773{
8774 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 wpt_uint16 usDataOffset = 0;
8777 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008779
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8782
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008783 wpalMutexAcquire(&pWDICtx->wptMutex);
8784
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 /*------------------------------------------------------------------------
8786 Check to see if we have any session with this BSSID already stored, we
8787 should not
8788 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8790 pwdiJoinParams->wdiReqInfo.macBSSID,
8791 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008792
8793 if ( NULL != pBSSSes )
8794 {
8795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008796 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8797 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008798
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008799 /*reset the bAssociationInProgress otherwise the next
8800 *join request will be queued*/
8801 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8802 wpalMutexRelease(&pWDICtx->wptMutex);
8803 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008804 }
8805
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008810 if ( NULL == pBSSSes )
8811 {
8812
8813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8814 "DAL has no free sessions - cannot run another join");
8815
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008816 /*reset the bAssociationInProgress otherwise the next
8817 *join request will be queued*/
8818 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008819 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 }
8822
8823 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8825 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 WDI_MAC_ADDR_LEN);
8827
8828 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008829 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008830 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008831
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 wpalMutexRelease(&pWDICtx->wptMutex);
8833
8834 /*-----------------------------------------------------------------------
8835 Get message buffer
8836 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 sizeof(halJoinReqMsg.joinReqParams),
8839 &pSendBuffer, &usDataOffset, &usSendSize))||
8840 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8841 {
8842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008843 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 pUserData, pwdiJoinParams, wdiJoinRspCb);
8845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 }
8848
8849 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008850 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008851
8852 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008853 pwdiJoinParams->wdiReqInfo.macSTASelf,
8854 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008855
Jeff Johnsone7245742012-09-05 17:12:55 -07008856 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008857 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8858
8859 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8860
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008861#ifdef WLAN_FEATURE_VOWIFI
8862 halJoinReqMsg.joinReqParams.maxTxPower =
8863 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8864#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8867#endif
8868
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8871 wdiSecondaryChannelOffset);
8872
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 wpalMemoryCopy( pSendBuffer+usDataOffset,
8874 &halJoinReqMsg.joinReqParams,
8875 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008876
8877 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008879
8880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8884 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008885
8886}/*WDI_ProcessBSSSessionJoinReq*/
8887
8888/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008891
8892 @param pWDICtx: pointer to the WLAN DAL context
8893 pEventData: pointer to the event information structure
8894
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 @see
8896 @return Result of the function call
8897*/
8898WDI_Status
8899WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008900(
Jeff Johnson295189b2012-06-20 16:38:30 -07008901 WDI_ControlBlockType* pWDICtx,
8902 WDI_EventInfoType* pEventData
8903)
8904{
8905 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8906 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8907 WDI_JoinRspCb wdiJoinRspCb = NULL;
8908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8909
8910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 -------------------------------------------------------------------------*/
8913 if (( NULL == pEventData ) ||
8914 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8915 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8916 {
8917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008922
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 /*-------------------------------------------------------------------------
8924 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 -------------------------------------------------------------------------*/
8927 wpalMutexAcquire(&pWDICtx->wptMutex);
8928
8929 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8930 {
8931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8932 "Association is currently in progress, queueing new join req");
8933
8934 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008935 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 pwdiJoinParams->wdiReqInfo.macBSSID);
8937
8938 wpalMutexRelease(&pWDICtx->wptMutex);
8939
Jeff Johnsone7245742012-09-05 17:12:55 -07008940 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008941 }
8942
8943 /*Starting a new association */
8944 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8945 wpalMutexRelease(&pWDICtx->wptMutex);
8946
8947 /*Process the Join Request*/
8948 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8949 wdiJoinRspCb,pEventData->pUserData);
8950
8951}/*WDI_ProcessJoinReq*/
8952
8953
8954/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008957
8958 @param pWDICtx: pointer to the WLAN DAL context
8959 pEventData: pointer to the event information structure
8960
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 @see
8962 @return Result of the function call
8963*/
8964WDI_Status
8965WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008966(
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 WDI_ControlBlockType* pWDICtx,
8968 WDI_EventInfoType* pEventData
8969)
8970{
8971 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8972 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 wpt_uint16 uMsgSize = 0;
8976 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 wpt_uint16 usDataOffset = 0;
8978 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008980
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8983
8984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008986 -------------------------------------------------------------------------*/
8987 if (( NULL == pEventData ) ||
8988 ( NULL == pEventData->pEventData ) ||
8989 ( NULL == pEventData->pCBfnc ))
8990 {
8991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 }
8996
Abhishek Singh6927fa02014-06-27 17:19:55 +05308997 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8999 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
9000 /*-------------------------------------------------------------------------
9001 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 -------------------------------------------------------------------------*/
9004 wpalMutexAcquire(&pWDICtx->wptMutex);
9005
9006 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009007 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009009 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9010 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
9011 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009012
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 {
9015#ifdef WLAN_FEATURE_VOWIFI_11R
9016 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009018 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 if ( NULL == pBSSSes )
9021 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009022
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9024 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009025
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009029
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9032 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009034
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009036 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9038#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 * Request in case of IBSS*/
9041 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
9042 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
9043 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
9044 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
9045 {
9046 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009049 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 if ( NULL == pBSSSes )
9051 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009052
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9054 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009055
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009059
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9062 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009064
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9068 }
9069 else
9070 {
9071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009072 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9073 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9074 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9075
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 /* for IBSS testing */
9077 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 }
9080#endif
9081 }
9082
9083 /*------------------------------------------------------------------------
9084 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 ------------------------------------------------------------------------*/
9087 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9088 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9090 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9091 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9092 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009093
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009095
9096 wpalMutexRelease(&pWDICtx->wptMutex);
9097
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 }
9100
9101 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9103 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 sizeof(pWDICtx->wdiCachedConfigBssReq));
9105
9106 wpalMutexRelease(&pWDICtx->wptMutex);
9107
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9109#ifdef WLAN_FEATURE_11AC
9110 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009111 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 else
9113#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009114 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009115
9116 /*-----------------------------------------------------------------------
9117 Get message buffer
9118 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9121 ( usSendSize < (usDataOffset + uMsgSize )))
9122 {
9123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009124 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009128 }
9129
9130 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009131#ifdef WLAN_FEATURE_11AC
9132 if (WDI_getFwWlanFeatCaps(DOT11AC))
9133 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9134 &pwdiConfigBSSParams->wdiReqInfo);
9135 else
9136#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 &pwdiConfigBSSParams->wdiReqInfo);
9139
9140 /* Need to fill in the STA Index to invalid, since at this point we have not
9141 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009143
9144 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9146
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009147#ifdef WLAN_FEATURE_11AC
9148 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9149 wpalMemoryCopy( pSendBuffer+usDataOffset,
9150 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9151 uMsgSize);
9152 }else
9153#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009154 {
9155 if ( uMsgSize <= sizeof(tConfigBssParams) )
9156 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009157 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009158 &halConfigBssReqMsg.uBssParams.configBssParams,
9159 uMsgSize);
9160 }
9161 else
9162 {
9163 return WDI_STATUS_E_FAILURE;
9164 }
9165 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009166
9167 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309169 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9174 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 WDI_CONFIG_BSS_RESP);
9176
9177}/*WDI_ProcessConfigBSSReq*/
9178
9179
9180/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009183
9184 @param pWDICtx: pointer to the WLAN DAL context
9185 pEventData: pointer to the event information structure
9186
Jeff Johnson295189b2012-06-20 16:38:30 -07009187 @see
9188 @return Result of the function call
9189*/
9190WDI_Status
9191WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009192(
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 WDI_ControlBlockType* pWDICtx,
9194 WDI_EventInfoType* pEventData
9195)
9196{
9197 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9198 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 wpt_uint16 usDataOffset = 0;
9203 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009205
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9208
9209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 -------------------------------------------------------------------------*/
9212 if (( NULL == pEventData ) ||
9213 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9214 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9215 {
9216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009217 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 }
9221
9222 /*-------------------------------------------------------------------------
9223 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 -------------------------------------------------------------------------*/
9226 wpalMutexAcquire(&pWDICtx->wptMutex);
9227
9228 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9232 pwdiDelBSSParams->ucBssIdx,
9233 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009234
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 {
9237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 "%s: BSS does not yet exist. ucBssIdx %d",
9239 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009240
9241 wpalMutexRelease(&pWDICtx->wptMutex);
9242
9243 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009245
9246 /*------------------------------------------------------------------------
9247 Check if this BSS is being currently processed or queued,
9248 if queued - queue the new request as well
9249 ------------------------------------------------------------------------*/
9250 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9253 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9254 __func__, pwdiDelBSSParams->ucBssIdx);
9255
9256 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9257
9258 wpalMutexRelease(&pWDICtx->wptMutex);
9259
9260 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009262
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 /*-----------------------------------------------------------------------
9264 If we receive a Del BSS request for an association that is already in
9265 progress, it indicates that the assoc has failed => we no longer have
9266 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009268 -----------------------------------------------------------------------*/
9269 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9270 {
9271 /*We can switch to false here because even if a subsequent Join comes in
9272 it will only be processed when DAL transitions out of BUSY state which
9273 happens when the Del BSS request comes */
9274 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9275
9276 /*Former association is complete - prepare next pending assoc for
9277 processing */
9278 WDI_DequeueAssocRequest(pWDICtx);
9279 }
9280
9281 wpalMutexRelease(&pWDICtx->wptMutex);
9282 /*-----------------------------------------------------------------------
9283 Get message buffer
9284 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 sizeof(halBssReqMsg.deleteBssParams),
9287 &pSendBuffer, &usDataOffset, &usSendSize))||
9288 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9289 {
9290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009291 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 }
9296
9297 /*Fill in the message request structure*/
9298
9299 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009300 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009301
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 wpalMemoryCopy( pSendBuffer+usDataOffset,
9303 &halBssReqMsg.deleteBssParams,
9304 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009305
9306 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009308
Jeff Johnsone7245742012-09-05 17:12:55 -07009309
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9315
Jeff Johnsone7245742012-09-05 17:12:55 -07009316
Jeff Johnson295189b2012-06-20 16:38:30 -07009317}/*WDI_ProcessDelBSSReq*/
9318
9319/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009322
9323 @param pWDICtx: pointer to the WLAN DAL context
9324 pEventData: pointer to the event information structure
9325
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 @see
9327 @return Result of the function call
9328*/
9329WDI_Status
9330WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009331(
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 WDI_ControlBlockType* pWDICtx,
9333 WDI_EventInfoType* pEventData
9334)
9335{
9336 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9337 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 wpt_uint16 usDataOffset = 0;
9342 wpt_uint16 usSendSize = 0;
9343 wpt_uint16 uMsgSize = 0;
9344 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009346
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9349
9350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 -------------------------------------------------------------------------*/
9353 if (( NULL == pEventData ) ||
9354 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9355 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9356 {
9357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009361 }
9362
9363 /*-------------------------------------------------------------------------
9364 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 -------------------------------------------------------------------------*/
9367 wpalMutexAcquire(&pWDICtx->wptMutex);
9368
9369 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9373 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9374 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009375
9376 if ( NULL == pBSSSes )
9377 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9379 "%s: Association sequence for this BSS does not yet exist - "
9380 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9381 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009382
9383 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 }
9386
9387 /*------------------------------------------------------------------------
9388 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 ------------------------------------------------------------------------*/
9391 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9392 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9394 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9395 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009396
Jeff Johnsone7245742012-09-05 17:12:55 -07009397 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009398
9399 wpalMutexRelease(&pWDICtx->wptMutex);
9400
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 }
9403
9404 /*-----------------------------------------------------------------------
9405 If Post Assoc was not yet received - the current association must
9406 be in progress
9407 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009408 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9410 {
9411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9412 "Association sequence for this BSS association no longer in "
9413 "progress - not allowed");
9414
9415 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 }
9418
9419 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 -----------------------------------------------------------------------*/
9422 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9423 {
9424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9425 "Post Assoc not allowed before JOIN - failing request");
9426
9427 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 }
9430
9431 wpalMutexRelease(&pWDICtx->wptMutex);
9432
9433 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9434 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9435 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9440 ( usSendSize < (usDataOffset + uMsgSize )))
9441 {
9442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009443 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009447 }
9448
9449 /*Copy the STA parameters */
9450 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9451 &pwdiPostAssocParams->wdiSTAParams );
9452
9453 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 WDI_STATableFindStaidByAddr(pWDICtx,
9456 pwdiPostAssocParams->wdiSTAParams.macSTA,
9457 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9458 {
9459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009460 MAC_ADDRESS_STR
9461 ": This station does not exist in the WDI Station Table",
9462 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009464 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 }
9467
9468 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 pBSSSes->ucBSSIdx;
9471
9472 /*Copy the BSS parameters */
9473 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9474 &pwdiPostAssocParams->wdiBSSParams);
9475
9476 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 WDI_STATableFindStaidByAddr(pWDICtx,
9479 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 {
9482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009483 MAC_ADDRESS_STR
9484 ": This station does not exist in the WDI Station Table",
9485 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009487 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009489 }
9490
9491 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 pBSSSes->ucBSSIdx;
9494
Jeff Johnsone7245742012-09-05 17:12:55 -07009495
9496 wpalMemoryCopy( pSendBuffer+usDataOffset,
9497 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9498 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009499
9500 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9501
Jeff Johnsone7245742012-09-05 17:12:55 -07009502 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9503 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9504 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009505
Jeff Johnsone7245742012-09-05 17:12:55 -07009506
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009509
Jeff Johnsone7245742012-09-05 17:12:55 -07009510
9511 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009512 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009514
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309515 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009520 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9521
Jeff Johnsone7245742012-09-05 17:12:55 -07009522
Jeff Johnson295189b2012-06-20 16:38:30 -07009523}/*WDI_ProcessPostAssocReq*/
9524
9525/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009528
9529 @param pWDICtx: pointer to the WLAN DAL context
9530 pEventData: pointer to the event information structure
9531
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 @see
9533 @return Result of the function call
9534*/
9535WDI_Status
9536WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009537(
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 WDI_ControlBlockType* pWDICtx,
9539 WDI_EventInfoType* pEventData
9540)
9541{
9542 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9543 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009545 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 wpt_uint16 usDataOffset = 0;
9548 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9551
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9554
9555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 -------------------------------------------------------------------------*/
9558 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9559 ( NULL == pEventData->pCBfnc ))
9560 {
9561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 }
9566
9567 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9568 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9569 /*-------------------------------------------------------------------------
9570 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 -------------------------------------------------------------------------*/
9573 wpalMutexAcquire(&pWDICtx->wptMutex);
9574
9575 /*------------------------------------------------------------------------
9576 Find the BSS for which the request is made and identify WDI session
9577 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9579 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 &macBSSID))
9581 {
9582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009583 "This station does not exist in the WDI Station Table %d",
9584 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 }
9588
Jeff Johnsone7245742012-09-05 17:12:55 -07009589 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9590 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9593 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9594 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009595
9596 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 }
9599
9600 /*------------------------------------------------------------------------
9601 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 ------------------------------------------------------------------------*/
9604 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9605 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9607 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9608 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009609
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 }
9614
9615 wpalMutexRelease(&pWDICtx->wptMutex);
9616 /*-----------------------------------------------------------------------
9617 Get message buffer
9618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 sizeof(halDelStaReqMsg.delStaParams),
9621 &pSendBuffer, &usDataOffset, &usSendSize))||
9622 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9623 {
9624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009625 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 }
9630
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9632 wpalMemoryCopy( pSendBuffer+usDataOffset,
9633 &halDelStaReqMsg.delStaParams,
9634 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009635
9636 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009638
9639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9644
9645}/*WDI_ProcessDelSTAReq*/
9646
9647
9648/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009650==========================================================================*/
9651/**
9652 @brief Process Set BSS Key Request function (called when Main FSM
9653 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009654
9655 @param pWDICtx: pointer to the WLAN DAL context
9656 pEventData: pointer to the event information structure
9657
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 @see
9659 @return Result of the function call
9660*/
9661WDI_Status
9662WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009663(
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 WDI_ControlBlockType* pWDICtx,
9665 WDI_EventInfoType* pEventData
9666)
9667{
9668 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9669 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009670 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 wpt_uint16 usDataOffset = 0;
9674 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009675 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9677 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309678 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009679
9680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9681
9682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 -------------------------------------------------------------------------*/
9685 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9686 ( NULL == pEventData->pCBfnc ))
9687 {
9688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009689 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 }
9693
9694 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9695 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9696 /*-------------------------------------------------------------------------
9697 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 -------------------------------------------------------------------------*/
9700 wpalMutexAcquire(&pWDICtx->wptMutex);
9701
9702 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9706 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9707 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009708
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 {
9711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9713 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009714
9715 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 }
9718
9719 /*------------------------------------------------------------------------
9720 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 ------------------------------------------------------------------------*/
9723 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9724 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9726 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9727 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009728
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 }
9733
9734
9735 wpalMutexRelease(&pWDICtx->wptMutex);
9736 /*-----------------------------------------------------------------------
9737 Get message buffer
9738 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9741 &pSendBuffer, &usDataOffset, &usSendSize))||
9742 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9743 {
9744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009745 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 }
9750
9751 /*-----------------------------------------------------------------------
9752 Copy the Key parameters into the HAL message
9753 -----------------------------------------------------------------------*/
9754
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009756
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9759
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9762
9763 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9764 keyIndex++)
9765 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009766 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009767 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9768 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9769 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9770 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9771 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309772
9773 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9774 {
9775 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9776 {
9777 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9778 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9779 }
9780
9781 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9782 {
9783 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9784 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9785 }
9786
9787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9788 "%s: Negated Keys", __func__);
9789 }
9790 else
9791 {
9792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9793 "%s: No change in Keys", __func__);
9794 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309797 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9798 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9799 WDI_MAX_KEY_LENGTH);
9800 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309805 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009806
9807 wpalMemoryCopy( pSendBuffer+usDataOffset,
9808 &halSetBssKeyReqMsg.setBssKeyParams,
9809 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009810
9811 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009813
9814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9818 wdiSetBSSKeyRspCb, pEventData->pUserData,
9819 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009820
9821}/*WDI_ProcessSetBssKeyReq*/
9822
9823/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009826
9827 @param pWDICtx: pointer to the WLAN DAL context
9828 pEventData: pointer to the event information structure
9829
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 @see
9831 @return Result of the function call
9832*/
9833WDI_Status
9834WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009835(
Jeff Johnson295189b2012-06-20 16:38:30 -07009836 WDI_ControlBlockType* pWDICtx,
9837 WDI_EventInfoType* pEventData
9838)
9839{
9840 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9841 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 wpt_uint16 usDataOffset = 0;
9846 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9850
9851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 -------------------------------------------------------------------------*/
9854 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9855 ( NULL == pEventData->pCBfnc ))
9856 {
9857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009858 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 }
9862
9863 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9864 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9865 /*-------------------------------------------------------------------------
9866 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 -------------------------------------------------------------------------*/
9869 wpalMutexAcquire(&pWDICtx->wptMutex);
9870
9871 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009873 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9875 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9876 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009877
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 {
9880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9882 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009883
9884 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009885 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009886 }
9887
9888 /*------------------------------------------------------------------------
9889 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 ------------------------------------------------------------------------*/
9892 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9893 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9895 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9896 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009897
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009901 }
9902
9903
9904 wpalMutexRelease(&pWDICtx->wptMutex);
9905
9906 /*-----------------------------------------------------------------------
9907 Get message buffer
9908 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9911 &pSendBuffer, &usDataOffset, &usSendSize))||
9912 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9913 {
9914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009915 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 }
9920 /*-----------------------------------------------------------------------
9921 Copy the Key parameters into the HAL message
9922 -----------------------------------------------------------------------*/
9923 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9924
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9927
9928 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9929
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9932
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 wpalMemoryCopy( pSendBuffer+usDataOffset,
9934 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9935 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009936
9937 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009939
9940 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009941 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009946}/*WDI_ProcessRemoveBssKeyReq*/
9947
9948/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009951
9952 @param pWDICtx: pointer to the WLAN DAL context
9953 pEventData: pointer to the event information structure
9954
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 @see
9956 @return Result of the function call
9957*/
9958WDI_Status
9959WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009960(
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 WDI_ControlBlockType* pWDICtx,
9962 WDI_EventInfoType* pEventData
9963)
9964{
9965 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9966 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9967 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 wpt_uint16 usDataOffset = 0;
9970 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9975 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309976 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009977
9978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9979
9980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 -------------------------------------------------------------------------*/
9983 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9984 ( NULL == pEventData->pCBfnc ))
9985 {
9986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 }
9991
9992 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9993 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9994 /*-------------------------------------------------------------------------
9995 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 -------------------------------------------------------------------------*/
9998 wpalMutexAcquire(&pWDICtx->wptMutex);
9999
10000 /*------------------------------------------------------------------------
10001 Find the BSS for which the request is made and identify WDI session
10002 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10004 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010005 &macBSSID))
10006 {
10007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010008 "This station does not exist in the WDI Station Table %d",
10009 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 }
10013
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10015 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10018 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10019 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010020
10021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010024
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 /*------------------------------------------------------------------------
10026 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010027 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010028 ------------------------------------------------------------------------*/
10029 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10030 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10032 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10033 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010034
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 }
10039
10040
10041 wpalMutexRelease(&pWDICtx->wptMutex);
10042 /*-----------------------------------------------------------------------
10043 Get message buffer
10044 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10047 &pSendBuffer, &usDataOffset, &usSendSize))||
10048 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10049 {
10050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010051 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010055 }
10056 /*-----------------------------------------------------------------------
10057 Copy the STA Key parameters into the HAL message
10058 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10061
Jeff Johnsone7245742012-09-05 17:12:55 -070010062 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010063 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10064
10065 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10066
10067 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10068
10069 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10070
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10072 keyIndex++)
10073 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10076 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10077 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10078 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10079 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010080
10081 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10082 {
10083 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10084 {
10085 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10086 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10087 }
10088
10089 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10090 {
10091 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10092 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10093 }
10094
10095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10096 "%s: Negated Keys", __func__);
10097 }
10098 else
10099 {
10100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10101 "%s: No change in Keys", __func__);
10102 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010105 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10106 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10107 WDI_MAX_KEY_LENGTH);
10108 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010113 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010114
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 wpalMemoryCopy( pSendBuffer+usDataOffset,
10116 &halSetStaKeyReqMsg.setStaKeyParams,
10117 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010118
10119 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010121 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010125 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10126 wdiSetSTAKeyRspCb, pEventData->pUserData,
10127 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010128
10129}/*WDI_ProcessSetSTAKeyReq*/
10130
10131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010133 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010134
10135 @param pWDICtx: pointer to the WLAN DAL context
10136 pEventData: pointer to the event information structure
10137
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 @see
10139 @return Result of the function call
10140*/
10141WDI_Status
10142WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010143(
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 WDI_ControlBlockType* pWDICtx,
10145 WDI_EventInfoType* pEventData
10146)
10147{
10148 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10149 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10150 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 wpt_uint16 usDataOffset = 0;
10153 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010154 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 wpt_macAddr macBSSID;
10156 wpt_uint8 ucCurrentBSSSesIdx;
10157 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10159
10160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 -------------------------------------------------------------------------*/
10163 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10164 ( NULL == pEventData->pCBfnc ))
10165 {
10166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 }
10171
10172 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10173 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10174 /*-------------------------------------------------------------------------
10175 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 -------------------------------------------------------------------------*/
10178 wpalMutexAcquire(&pWDICtx->wptMutex);
10179
10180 /*------------------------------------------------------------------------
10181 Find the BSS for which the request is made and identify WDI session
10182 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10184 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 &macBSSID))
10186 {
10187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010188 "This station does not exist in the WDI Station Table %d",
10189 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 }
10193
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10195 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10198 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10199 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010200
10201 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010204
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 /*------------------------------------------------------------------------
10206 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010208 ------------------------------------------------------------------------*/
10209 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10210 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10212 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10213 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010214
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010216 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010217 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010218 }
10219
10220
10221
10222 wpalMutexRelease(&pWDICtx->wptMutex);
10223 /*-----------------------------------------------------------------------
10224 Get message buffer
10225 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10228 &pSendBuffer, &usDataOffset, &usSendSize))||
10229 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10230 {
10231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010232 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 }
10237
10238 /*-----------------------------------------------------------------------
10239 Copy the Key parameters into the HAL message
10240 -----------------------------------------------------------------------*/
10241
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10244
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10247
Jeff Johnsone7245742012-09-05 17:12:55 -070010248 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010249 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10250
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10253
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 wpalMemoryCopy( pSendBuffer+usDataOffset,
10255 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10256 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010257
10258 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010260
10261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010264 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010265 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010267
10268}/*WDI_ProcessRemoveSTAKeyReq*/
10269
10270/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010272 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010273
10274 @param pWDICtx: pointer to the WLAN DAL context
10275 pEventData: pointer to the event information structure
10276
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 @see
10278 @return Result of the function call
10279*/
10280WDI_Status
10281WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010282(
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 WDI_ControlBlockType* pWDICtx,
10284 WDI_EventInfoType* pEventData
10285)
10286{
10287 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10288 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10289 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 wpt_uint16 usDataOffset = 0;
10292 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010296 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10297 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010298 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010299
10300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10301
10302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 -------------------------------------------------------------------------*/
10305 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10306 ( NULL == pEventData->pCBfnc ))
10307 {
10308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 }
10313
10314 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10315 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10316 /*-------------------------------------------------------------------------
10317 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 -------------------------------------------------------------------------*/
10320 wpalMutexAcquire(&pWDICtx->wptMutex);
10321
10322 /*------------------------------------------------------------------------
10323 Find the BSS for which the request is made and identify WDI session
10324 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010325 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10326 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 &macBSSID))
10328 {
10329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010330 "This station does not exist in the WDI Station Table %d",
10331 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 }
10335
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10337 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 {
10339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010340 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010342
10343 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010346
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 /*------------------------------------------------------------------------
10348 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010349 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 ------------------------------------------------------------------------*/
10351 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10352 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10354 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10355 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010356
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 }
10361
10362
10363 wpalMutexRelease(&pWDICtx->wptMutex);
10364 /*-----------------------------------------------------------------------
10365 Get message buffer
10366 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010368 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10369 &pSendBuffer, &usDataOffset, &usSendSize))||
10370 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10371 {
10372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010373 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 }
10378 /*-----------------------------------------------------------------------
10379 Copy the STA Key parameters into the HAL message
10380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10383
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010385 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10386
10387 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10388
10389 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10390
10391 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10392
Jeff Johnson295189b2012-06-20 16:38:30 -070010393 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10394 keyIndex++)
10395 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10398 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10399 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10400 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10401 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010402
10403 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10404 {
10405 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10406 {
10407 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10408 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10409 }
10410
10411 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10412 {
10413 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10414 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10415 }
10416
10417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10418 "%s: Negated Keys", __func__);
10419 }
10420 else
10421 {
10422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10423 "%s: No change in Keys", __func__);
10424 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010427 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10428 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10429 WDI_MAX_KEY_LENGTH);
10430 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010431 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010432 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010433 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010434 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010435 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 wpalMemoryCopy( pSendBuffer+usDataOffset,
10437 &halSetStaKeyReqMsg.setStaKeyParams,
10438 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010439
10440 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010442
10443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10447 wdiSetSTAKeyRspCb, pEventData->pUserData,
10448 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010449
10450}/*WDI_ProcessSetSTABcastKeyReq*/
10451
10452/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010455
10456 @param pWDICtx: pointer to the WLAN DAL context
10457 pEventData: pointer to the event information structure
10458
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 @see
10460 @return Result of the function call
10461*/
10462WDI_Status
10463WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010464(
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 WDI_ControlBlockType* pWDICtx,
10466 WDI_EventInfoType* pEventData
10467)
10468{
10469 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10470 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10471 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 wpt_uint16 usDataOffset = 0;
10474 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010476 wpt_macAddr macBSSID;
10477 wpt_uint8 ucCurrentBSSSesIdx;
10478 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10480
10481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010483 -------------------------------------------------------------------------*/
10484 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10485 ( NULL == pEventData->pCBfnc ))
10486 {
10487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 }
10492
10493 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10494 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10495 /*-------------------------------------------------------------------------
10496 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 -------------------------------------------------------------------------*/
10499 wpalMutexAcquire(&pWDICtx->wptMutex);
10500
10501 /*------------------------------------------------------------------------
10502 Find the BSS for which the request is made and identify WDI session
10503 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10505 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 &macBSSID))
10507 {
10508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010509 "This station does not exist in the WDI Station Table %d",
10510 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010513 }
10514
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10516 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10519 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10520 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010521
10522 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010525
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 /*------------------------------------------------------------------------
10527 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010529 ------------------------------------------------------------------------*/
10530 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10531 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10533 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10534 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010535
Jeff Johnsone7245742012-09-05 17:12:55 -070010536 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010537 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 }
10540
10541
10542
10543 wpalMutexRelease(&pWDICtx->wptMutex);
10544 /*-----------------------------------------------------------------------
10545 Get message buffer
10546 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010547 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010548 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10549 &pSendBuffer, &usDataOffset, &usSendSize))||
10550 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10551 {
10552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010553 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 }
10558
10559 /*-----------------------------------------------------------------------
10560 Copy the Key parameters into the HAL message
10561 -----------------------------------------------------------------------*/
10562
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10565
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10568
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10571
Jeff Johnsone7245742012-09-05 17:12:55 -070010572 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10574
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 wpalMemoryCopy( pSendBuffer+usDataOffset,
10576 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10577 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010578
10579 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010581
10582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010588
10589}/*WDI_ProcessRemoveSTABcastKeyReq*/
10590
10591/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010593==========================================================================*/
10594/**
10595 @brief Process Add TSpec Request function (called when Main FSM
10596 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010597
10598 @param pWDICtx: pointer to the WLAN DAL context
10599 pEventData: pointer to the event information structure
10600
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 @see
10602 @return Result of the function call
10603*/
10604WDI_Status
10605WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010606(
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 WDI_ControlBlockType* pWDICtx,
10608 WDI_EventInfoType* pEventData
10609)
10610{
10611 WDI_AddTSReqParamsType* pwdiAddTSParams;
10612 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 wpt_uint16 usDataOffset = 0;
10617 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 wpt_macAddr macBSSID;
10620 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010621
Jeff Johnson295189b2012-06-20 16:38:30 -070010622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10623
10624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 -------------------------------------------------------------------------*/
10627 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10628 ( NULL == pEventData->pCBfnc ))
10629 {
10630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010631 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010632 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010634 }
10635
10636 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10637 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10638 /*-------------------------------------------------------------------------
10639 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010641 -------------------------------------------------------------------------*/
10642 wpalMutexAcquire(&pWDICtx->wptMutex);
10643
10644 /*------------------------------------------------------------------------
10645 Find the BSS for which the request is made and identify WDI session
10646 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010647 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10648 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010649 &macBSSID))
10650 {
10651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010652 "This station does not exist in the WDI Station Table %d",
10653 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 }
10657
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10659 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010660 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10662 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10663 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010664
10665 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010666 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010667 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010668
Jeff Johnson295189b2012-06-20 16:38:30 -070010669 /*------------------------------------------------------------------------
10670 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010671 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010672 ------------------------------------------------------------------------*/
10673 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10674 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10676 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10677 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010678
Jeff Johnsone7245742012-09-05 17:12:55 -070010679 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010680 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010681 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010682 }
10683
10684 wpalMutexRelease(&pWDICtx->wptMutex);
10685 /*-----------------------------------------------------------------------
10686 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010688 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10690 sizeof(halAddTsParams),
10691 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 &usSendSize))||
10693 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10694 {
10695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010696 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010700 }
10701
10702 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10703 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10704
10705 //TSPEC IE
10706 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10707 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010712 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010714 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010715 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010716 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010717 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010718 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010719 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010727 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010731 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010736 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010737 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10738
10739 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010743 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10754
10755 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010756 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10760
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 wpalMemoryCopy( pSendBuffer+usDataOffset,
10762 &halAddTsParams,
10763 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010764
10765 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010767
10768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010769 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010771 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010773 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010774}/*WDI_ProcessAddTSpecReq*/
10775
10776
10777/**
10778 @brief Process Del TSpec Request function (called when Main FSM
10779 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010780
10781 @param pWDICtx: pointer to the WLAN DAL context
10782 pEventData: pointer to the event information structure
10783
Jeff Johnson295189b2012-06-20 16:38:30 -070010784 @see
10785 @return Result of the function call
10786*/
10787WDI_Status
10788WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010789(
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 WDI_ControlBlockType* pWDICtx,
10791 WDI_EventInfoType* pEventData
10792)
10793{
10794 WDI_DelTSReqParamsType* pwdiDelTSParams;
10795 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010796 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010797 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010798 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010799 wpt_uint16 usDataOffset = 0;
10800 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010801 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10803
10804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010805 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010806 -------------------------------------------------------------------------*/
10807 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10808 ( NULL == pEventData->pCBfnc ))
10809 {
10810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010814 }
10815
10816 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10817 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10818
10819 /*-------------------------------------------------------------------------
10820 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 -------------------------------------------------------------------------*/
10823 wpalMutexAcquire(&pWDICtx->wptMutex);
10824
10825 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010826 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10829 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10830 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010831
Jeff Johnsone7245742012-09-05 17:12:55 -070010832 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010833 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10835 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10836 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10837
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 }
10841
10842 /*------------------------------------------------------------------------
10843 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 ------------------------------------------------------------------------*/
10846 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10847 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10849 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10850 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010851
Jeff Johnsone7245742012-09-05 17:12:55 -070010852 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010854 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 }
10856
10857
10858 wpalMutexRelease(&pWDICtx->wptMutex);
10859 /*-----------------------------------------------------------------------
10860 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010861 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010862 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010864 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10865 &pSendBuffer, &usDataOffset, &usSendSize))||
10866 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10867 {
10868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010869 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010870 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010873 }
10874
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 wpalMemoryCopy( pSendBuffer+usDataOffset,
10876 &pwdiDelTSParams->wdiDelTSInfo,
10877 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010878
10879 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010881
10882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010883 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010884 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10886 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010887}/*WDI_ProcessDelTSpecReq*/
10888
10889/**
10890 @brief Process Update EDCA Params Request function (called when
10891 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010892
10893 @param pWDICtx: pointer to the WLAN DAL context
10894 pEventData: pointer to the event information structure
10895
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 @see
10897 @return Result of the function call
10898*/
10899WDI_Status
10900WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010901(
Jeff Johnson295189b2012-06-20 16:38:30 -070010902 WDI_ControlBlockType* pWDICtx,
10903 WDI_EventInfoType* pEventData
10904)
10905{
10906 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10907 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010908 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010910 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 wpt_uint16 usDataOffset = 0;
10912 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10915
10916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010918 -------------------------------------------------------------------------*/
10919 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10920 ( NULL == pEventData->pCBfnc ))
10921 {
10922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 }
10927
10928 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10929 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10930 /*-------------------------------------------------------------------------
10931 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 -------------------------------------------------------------------------*/
10934 wpalMutexAcquire(&pWDICtx->wptMutex);
10935
10936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10940 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10941 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010942
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010944 {
10945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10947 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010948
10949 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010951 }
10952
10953 /*------------------------------------------------------------------------
10954 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 ------------------------------------------------------------------------*/
10957 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10958 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10960 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10961 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010962
Jeff Johnsone7245742012-09-05 17:12:55 -070010963 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010965 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010966 }
10967
10968
10969 wpalMutexRelease(&pWDICtx->wptMutex);
10970 /*-----------------------------------------------------------------------
10971 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010972 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010973 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010974 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010975 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10976 &pSendBuffer, &usDataOffset, &usSendSize))||
10977 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10978 {
10979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010980 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010981 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010984 }
10985
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 wpalMemoryCopy( pSendBuffer+usDataOffset,
10987 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10988 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010989
10990 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010991 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010992
10993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010996 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10997 wdiUpdateEDCARspCb, pEventData->pUserData,
10998 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010999}/*WDI_ProcessUpdateEDCAParamsReq*/
11000
11001/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011004
11005 @param pWDICtx: pointer to the WLAN DAL context
11006 pEventData: pointer to the event information structure
11007
Jeff Johnson295189b2012-06-20 16:38:30 -070011008 @see
11009 @return Result of the function call
11010*/
11011WDI_Status
11012WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011013(
Jeff Johnson295189b2012-06-20 16:38:30 -070011014 WDI_ControlBlockType* pWDICtx,
11015 WDI_EventInfoType* pEventData
11016)
11017{
11018 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
11019 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011020 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011021 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011022 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011023 wpt_uint16 usDataOffset = 0;
11024 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 wpt_macAddr macBSSID;
11027
11028 tAddBASessionReqMsg halAddBASessionReq;
11029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11030
11031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 -------------------------------------------------------------------------*/
11034 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11035 ( NULL == pEventData->pCBfnc ))
11036 {
11037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011041 }
11042
Jeff Johnsone7245742012-09-05 17:12:55 -070011043 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011044 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011045 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011046 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11047 /*-------------------------------------------------------------------------
11048 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011049 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011050 -------------------------------------------------------------------------*/
11051 wpalMutexAcquire(&pWDICtx->wptMutex);
11052
11053 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11057 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 &macBSSID))
11059 {
11060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011061 "This station does not exist in the WDI Station Table %d",
11062 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011063 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 }
11066
11067
Jeff Johnsone7245742012-09-05 17:12:55 -070011068 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011069
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11073 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11074 __func__, MAC_ADDR_ARRAY(macBSSID));
11075
Jeff Johnson295189b2012-06-20 16:38:30 -070011076 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 }
11079
11080 /*------------------------------------------------------------------------
11081 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011082 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011083 ------------------------------------------------------------------------*/
11084 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11085 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11087 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11088 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011089
Jeff Johnsone7245742012-09-05 17:12:55 -070011090 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011091 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 }
11094
11095
11096 wpalMutexRelease(&pWDICtx->wptMutex);
11097 /*-----------------------------------------------------------------------
11098 Get message buffer
11099 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11101 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011102 sizeof(halAddBASessionReq.addBASessionParams),
11103 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011104 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011105 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11106 {
11107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011108 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011109 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011112 }
11113
11114 halAddBASessionReq.addBASessionParams.staIdx =
11115 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11116 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11117 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11118 WDI_MAC_ADDR_LEN);
11119 halAddBASessionReq.addBASessionParams.baTID =
11120 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11121 halAddBASessionReq.addBASessionParams.baPolicy =
11122 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11123 halAddBASessionReq.addBASessionParams.baBufferSize =
11124 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11125 halAddBASessionReq.addBASessionParams.baTimeout =
11126 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11127 halAddBASessionReq.addBASessionParams.baSSN =
11128 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11129 halAddBASessionReq.addBASessionParams.baDirection =
11130 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11131
Jeff Johnsone7245742012-09-05 17:12:55 -070011132 wpalMemoryCopy( pSendBuffer+usDataOffset,
11133 &halAddBASessionReq.addBASessionParams,
11134 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011135
11136 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011137 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011138
11139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011140 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011142 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11143 wdiAddBASessionRspCb, pEventData->pUserData,
11144 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011145}/*WDI_ProcessAddBASessionReq*/
11146
11147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011148 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011149 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011150
11151 @param pWDICtx: pointer to the WLAN DAL context
11152 pEventData: pointer to the event information structure
11153
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 @see
11155 @return Result of the function call
11156*/
11157WDI_Status
11158WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011159(
Jeff Johnson295189b2012-06-20 16:38:30 -070011160 WDI_ControlBlockType* pWDICtx,
11161 WDI_EventInfoType* pEventData
11162)
11163{
11164 WDI_DelBAReqParamsType* pwdiDelBAParams;
11165 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 wpt_uint16 usDataOffset = 0;
11170 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 wpt_macAddr macBSSID;
11173 tDelBAParams halDelBAparam;
11174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11175
11176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011178 -------------------------------------------------------------------------*/
11179 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11180 ( NULL == pEventData->pCBfnc ))
11181 {
11182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 }
11187
11188 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11189 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11190 /*-------------------------------------------------------------------------
11191 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011192 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011193 -------------------------------------------------------------------------*/
11194 wpalMutexAcquire(&pWDICtx->wptMutex);
11195
11196 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11200 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011201 &macBSSID))
11202 {
11203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011204 "This station does not exist in the WDI Station Table %d",
11205 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011208 }
11209
Jeff Johnsone7245742012-09-05 17:12:55 -070011210 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011211
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11215 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11216 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011217
11218 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 }
11221
11222 /*------------------------------------------------------------------------
11223 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011224 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011225 ------------------------------------------------------------------------*/
11226 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11227 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11229 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11230 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011231
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 }
11236
11237 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 sizeof(halDelBAparam),
11240 &pSendBuffer, &usDataOffset, &usSendSize))||
11241 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11242 {
11243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011244 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011248 }
11249
11250 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11251 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11252 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11253
Jeff Johnsone7245742012-09-05 17:12:55 -070011254 wpalMemoryCopy( pSendBuffer+usDataOffset,
11255 &halDelBAparam,
11256 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011257
11258 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011260
11261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011262 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11265 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011266}/*WDI_ProcessDelBAReq*/
11267
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011268#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011269
11270WDI_Status
11271WDI_ProcessTSMStatsReq
11272(
11273 WDI_ControlBlockType* pWDICtx,
11274 WDI_EventInfoType* pEventData
11275)
11276{
11277 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11278 WDI_TsmRspCb wdiTSMRspCb;
11279 wpt_uint8 ucCurrentBSSSesIdx = 0;
11280 WDI_BSSSessionType* pBSSSes = NULL;
11281 wpt_uint8* pSendBuffer = NULL;
11282 wpt_uint16 usDataOffset = 0;
11283 wpt_uint16 usSendSize = 0;
11284 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11285 tTsmStatsParams halTsmStatsReqParams = {0};
11286
11287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11288
11289 /*-------------------------------------------------------------------------
11290 Sanity check
11291 -------------------------------------------------------------------------*/
11292 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11293 ( NULL == pEventData->pCBfnc ))
11294 {
11295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011297 WDI_ASSERT(0);
11298 return WDI_STATUS_E_FAILURE;
11299 }
11300
11301 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11302 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11303 /*-------------------------------------------------------------------------
11304 Check to see if we are in the middle of an association, if so queue, if
11305 not it means it is free to process request
11306 -------------------------------------------------------------------------*/
11307 wpalMutexAcquire(&pWDICtx->wptMutex);
11308
11309 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11310 if ( NULL == pBSSSes )
11311 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11313 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11314 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011315
11316 wpalMutexRelease(&pWDICtx->wptMutex);
11317 return WDI_STATUS_E_NOT_ALLOWED;
11318 }
11319
11320 /*------------------------------------------------------------------------
11321 Check if this BSS is being currently processed or queued,
11322 if queued - queue the new request as well
11323 ------------------------------------------------------------------------*/
11324 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11325 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011327 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011329
11330 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11331 wpalMutexRelease(&pWDICtx->wptMutex);
11332 return wdiStatus;
11333 }
11334
11335 wpalMutexRelease(&pWDICtx->wptMutex);
11336 /*-----------------------------------------------------------------------
11337 Get message buffer
11338 ! TO DO : proper conversion into the HAL Message Request Format
11339 -----------------------------------------------------------------------*/
11340 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11341 sizeof(halTsmStatsReqParams),
11342 &pSendBuffer, &usDataOffset, &usSendSize))||
11343 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11344 {
11345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011346 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011347 pEventData, pwdiTSMParams, wdiTSMRspCb);
11348 WDI_ASSERT(0);
11349 return WDI_STATUS_E_FAILURE;
11350 }
11351
11352 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11353 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11354 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11355 WDI_MAC_ADDR_LEN);
11356 wpalMemoryCopy( pSendBuffer+usDataOffset,
11357 &halTsmStatsReqParams,
11358 sizeof(halTsmStatsReqParams));
11359
11360 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11361 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11362
11363 /*-------------------------------------------------------------------------
11364 Send TSM Stats Request to HAL
11365 -------------------------------------------------------------------------*/
11366 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11367 wdiTSMRspCb, pEventData->pUserData,
11368 WDI_TSM_STATS_RESP);
11369}/*WDI_ProcessTSMStatsReq*/
11370
11371#endif
11372
11373
11374/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011377
11378 @param pWDICtx: pointer to the WLAN DAL context
11379 pEventData: pointer to the event information structure
11380
Jeff Johnson295189b2012-06-20 16:38:30 -070011381 @see
11382 @return Result of the function call
11383*/
11384WDI_Status
11385WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011386(
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 WDI_ControlBlockType* pWDICtx,
11388 WDI_EventInfoType* pEventData
11389)
11390{
11391 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11392 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 wpt_uint16 usDataOffset = 0;
11395 wpt_uint16 usSendSize = 0;
11396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11397
11398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011400 -------------------------------------------------------------------------*/
11401 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11402 ( NULL == pEventData->pCBfnc ))
11403 {
11404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 }
11409
11410 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11411 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11412 /*-----------------------------------------------------------------------
11413 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011414 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011417 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11418 &pSendBuffer, &usDataOffset, &usSendSize))||
11419 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11420 {
11421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011422 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011423 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 }
11427
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 wpalMemoryCopy( pSendBuffer+usDataOffset,
11429 &pwdiFlushAcParams->wdiFlushAcInfo,
11430 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011431
11432 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011434
11435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011436 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011437 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011438 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11439 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011440}/*WDI_ProcessFlushAcReq*/
11441
11442/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011444 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011445
11446 @param pWDICtx: pointer to the WLAN DAL context
11447 pEventData: pointer to the event information structure
11448
Jeff Johnson295189b2012-06-20 16:38:30 -070011449 @see
11450 @return Result of the function call
11451*/
11452WDI_Status
11453WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011454(
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 WDI_ControlBlockType* pWDICtx,
11456 WDI_EventInfoType* pEventData
11457)
11458{
11459 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11460 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 wpt_uint16 usDataOffset = 0;
11463 wpt_uint16 usSendSize = 0;
11464
11465 tBtAmpEventMsg haltBtAmpEventMsg;
11466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11467
11468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011470 -------------------------------------------------------------------------*/
11471 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11472 ( NULL == pEventData->pCBfnc ))
11473 {
11474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011478 }
11479
11480 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11481 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11482 /*-----------------------------------------------------------------------
11483 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011484 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011487 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11488 &pSendBuffer, &usDataOffset, &usSendSize))||
11489 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11490 {
11491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011492 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 }
11497
Jeff Johnsone7245742012-09-05 17:12:55 -070011498 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 wpalMemoryCopy( pSendBuffer+usDataOffset,
11501 &haltBtAmpEventMsg.btAmpEventParams,
11502 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011503
11504 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011506
11507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11511 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011512}/*WDI_ProcessBtAmpEventReq*/
11513
11514/**
11515 @brief Process Add STA self Request function (called when Main FSM
11516 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011517
11518 @param pWDICtx: pointer to the WLAN DAL context
11519 pEventData: pointer to the event information structure
11520
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 @see
11522 @return Result of the function call
11523*/
11524WDI_Status
11525WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011526(
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 WDI_ControlBlockType* pWDICtx,
11528 WDI_EventInfoType* pEventData
11529)
11530{
11531 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11532 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011533 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011534 wpt_uint16 usDataOffset = 0;
11535 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011536 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11538
11539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 -------------------------------------------------------------------------*/
11542 if (( NULL == pEventData ) ||
11543 ( NULL == pEventData->pEventData) ||
11544 ( NULL == pEventData->pCBfnc))
11545 {
11546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011547 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 }
11551
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011555 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11556 /*-----------------------------------------------------------------------
11557 Get message buffer
11558 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11560 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011561 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011563 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 {
11565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011566 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011570 }
11571
11572 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011574 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11575
Jeff Johnsone7245742012-09-05 17:12:55 -070011576 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011577 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11578 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11579 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11580 {
11581 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11582 }
11583 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11584 VOS_P2P_CLIENT_MODE) ||
11585 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11586 VOS_P2P_DEVICE))
11587 {
11588 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11589 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011590 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011591 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011592
11593 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011594 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011595
11596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011597 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011599 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11600 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11601 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011602}/*WDI_ProcessAddSTASelfReq*/
11603
11604
11605
11606/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011607 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011608 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011609
11610 @param pWDICtx: pointer to the WLAN DAL context
11611 pEventData: pointer to the event information structure
11612
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 @see
11614 @return Result of the function call
11615*/
11616WDI_Status
11617WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011618(
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 WDI_ControlBlockType* pWDICtx,
11620 WDI_EventInfoType* pEventData
11621)
11622{
11623 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11624 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 wpt_uint16 usDataOffset = 0;
11627 wpt_uint16 usSendSize = 0;
11628 tDelStaSelfParams halSetDelSelfSTAParams;
11629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11630
11631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 -------------------------------------------------------------------------*/
11634 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11635 ( NULL == pEventData->pCBfnc ))
11636 {
11637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011641 }
11642
Jeff Johnsone7245742012-09-05 17:12:55 -070011643 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011644 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11645 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11646
11647 /*-----------------------------------------------------------------------
11648 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11653 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011654 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011655 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11656 {
11657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011658 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011659 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011662 }
11663
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11666
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11668 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011669
11670 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011672
11673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011674 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011676 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11677 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011678 WDI_DEL_STA_SELF_RESP);
11679
11680}
11681
Jeff Johnsone7245742012-09-05 17:12:55 -070011682#ifdef FEATURE_OEM_DATA_SUPPORT
11683/**
11684 @brief Process Start Oem Data Request function (called when Main
11685 FSM allows it)
11686
11687 @param pWDICtx: pointer to the WLAN DAL context
11688 pEventData: pointer to the event information structure
11689
11690 @see
11691 @return Result of the function call
11692*/
11693WDI_Status
11694WDI_ProcessStartOemDataReq
11695(
11696 WDI_ControlBlockType* pWDICtx,
11697 WDI_EventInfoType* pEventData
11698)
11699{
11700 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11701 WDI_oemDataRspCb wdiOemDataRspCb;
11702 wpt_uint8* pSendBuffer = NULL;
11703 wpt_uint16 usDataOffset = 0;
11704 wpt_uint16 usSendSize = 0;
11705 wpt_uint16 reqLen;
11706 tStartOemDataReqParams* halStartOemDataReqParams;
11707
11708 /*-------------------------------------------------------------------------
11709 Sanity check
11710 -------------------------------------------------------------------------*/
11711 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11712 ( NULL == pEventData->pCBfnc ))
11713 {
11714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011715 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011716 WDI_ASSERT(0);
11717 return WDI_STATUS_E_FAILURE;
11718 }
11719
11720 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11721 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11722
11723 /*-----------------------------------------------------------------------
11724 Get message buffer
11725 -----------------------------------------------------------------------*/
11726
11727 reqLen = sizeof(tStartOemDataReqParams);
11728
11729 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11730 WDI_START_OEM_DATA_REQ, reqLen,
11731 &pSendBuffer, &usDataOffset, &usSendSize))||
11732 (usSendSize < (usDataOffset + reqLen)))
11733 {
11734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011735 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011736 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11737 WDI_ASSERT(0);
11738 return WDI_STATUS_E_FAILURE;
11739 }
11740
11741 //copying WDI OEM DATA REQ PARAMS to shared memory
11742 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11743
11744 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11745 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11746
11747 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11748 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11749
11750 /*-------------------------------------------------------------------------
11751 Send Start Request to HAL
11752 -------------------------------------------------------------------------*/
11753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11754 wdiOemDataRspCb, pEventData->pUserData,
11755 WDI_START_OEM_DATA_RESP);
11756}/*WDI_ProcessStartOemDataReq*/
11757#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011758
11759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011762
11763 @param pWDICtx: pointer to the WLAN DAL context
11764 pEventData: pointer to the event information structure
11765
Jeff Johnson295189b2012-06-20 16:38:30 -070011766 @see
11767 @return Result of the function call
11768*/
11769WDI_Status
11770WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011771(
Jeff Johnson295189b2012-06-20 16:38:30 -070011772 WDI_ControlBlockType* pWDICtx,
11773 WDI_EventInfoType* pEventData
11774)
11775{
11776 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11777 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 wpt_uint16 usDataOffset = 0;
11780 wpt_uint16 usSendSize = 0;
11781 tHalWlanHostResumeReqParam halResumeReqParams;
11782
11783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11784
11785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011787 -------------------------------------------------------------------------*/
11788 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11789 ( NULL == pEventData->pCBfnc ))
11790 {
11791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011792 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011795 }
11796
11797 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11798 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11799
11800 /*-----------------------------------------------------------------------
11801 Get message buffer
11802 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11805 &pSendBuffer, &usDataOffset, &usSendSize))||
11806 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11807 {
11808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011809 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011810 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011813 }
11814
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011816 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011817
11818 wpalMemoryCopy( pSendBuffer+usDataOffset,
11819 &halResumeReqParams,
11820 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011821
11822 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011824
11825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011826 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011828 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11829 wdiHostResumeRspCb, pEventData->pUserData,
11830 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011831}/*WDI_ProcessHostResumeReq*/
11832
11833/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011834 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011835 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011836
11837 @param pWDICtx: pointer to the WLAN DAL context
11838 pEventData: pointer to the event information structure
11839
Jeff Johnson295189b2012-06-20 16:38:30 -070011840 @see
11841 @return Result of the function call
11842*/
11843WDI_Status
11844WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011845(
Jeff Johnson295189b2012-06-20 16:38:30 -070011846 WDI_ControlBlockType* pWDICtx,
11847 WDI_EventInfoType* pEventData
11848)
11849{
11850 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11851 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011852 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011853 wpt_uint16 usDataOffset = 0;
11854 wpt_uint16 usSendSize = 0;
11855 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11857
11858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011860 -------------------------------------------------------------------------*/
11861 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11862 ( NULL == pEventData->pCBfnc ))
11863 {
11864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011865 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 }
11869
11870 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11871 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011872
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 /*-----------------------------------------------------------------------
11874 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011875 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011876 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 sizeof(halTxPerTrackingReqParam),
11879 &pSendBuffer, &usDataOffset, &usSendSize))||
11880 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11881 {
11882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011883 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011888
Jeff Johnson295189b2012-06-20 16:38:30 -070011889 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11890 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11891 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11892 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011893
11894 wpalMemoryCopy( pSendBuffer+usDataOffset,
11895 &halTxPerTrackingReqParam,
11896 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011897
11898 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011900
11901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011902 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11905 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011906}/*WDI_ProcessSetTxPerTrackingReq*/
11907
11908/*=========================================================================
11909 Indications
11910=========================================================================*/
11911
11912/**
11913 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011914
11915 @param pWDICtx: pointer to the WLAN DAL context
11916 pEventData: pointer to the event information structure
11917
Jeff Johnson295189b2012-06-20 16:38:30 -070011918 @see
11919 @return Result of the function call
11920*/
11921WDI_Status
11922WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011923(
Jeff Johnson295189b2012-06-20 16:38:30 -070011924 WDI_ControlBlockType* pWDICtx,
11925 WDI_EventInfoType* pEventData
11926)
11927{
11928 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 wpt_uint16 usDataOffset = 0;
11931 wpt_uint16 usSendSize = 0;
11932 WDI_Status wdiStatus;
11933 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11935
11936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 -------------------------------------------------------------------------*/
11939 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11940 {
11941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011942 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 }
11946
11947 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11948
11949 /*-----------------------------------------------------------------------
11950 Get message buffer
11951 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11953 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011954 sizeof(halWlanSuspendIndparams),
11955 &pSendBuffer, &usDataOffset, &usSendSize))||
11956 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11957 {
11958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11959 "Unable to get send buffer in Suspend Ind ");
11960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011962 }
11963
11964 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11965 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11966
Jeff Johnsone7245742012-09-05 17:12:55 -070011967 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011968 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011969
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11971 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011972
11973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011974 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 -------------------------------------------------------------------------*/
11976 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011978
Jeff Johnsone7245742012-09-05 17:12:55 -070011979 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011980 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11981}/*WDI_ProcessHostSuspendInd*/
11982
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011983
11984
11985/**
11986 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11987
11988 @param pWDICtx: pointer to the WLAN DAL context
11989 pEventData: pointer to the event information structure
11990
11991 @see
11992 @return Result of the function call
11993*/
11994WDI_Status
11995WDI_ProcessTrafficStatsInd
11996(
11997 WDI_ControlBlockType* pWDICtx,
11998 WDI_EventInfoType* pEventData
11999)
12000{
12001 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
12002 wpt_uint8* pSendBuffer = NULL;
12003 wpt_uint16 usDataOffset = 0;
12004 wpt_uint16 usSendSize = 0;
12005 WDI_Status wdiStatus;
12006 tStatsClassBIndParams* pStatsClassBIndParams;
12007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12008
12009 /*-------------------------------------------------------------------------
12010 Sanity check
12011 -------------------------------------------------------------------------*/
12012 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12013 {
12014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12015 "%s: Invalid parameters in Traffic Stats ind",__func__);
12016 WDI_ASSERT(0);
12017 return WDI_STATUS_E_FAILURE;
12018 }
12019
12020 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
12021
12022 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
12023 {
12024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12025 "%s: Invalid parameters in Traffic Stats ind",__func__);
12026 WDI_ASSERT(0);
12027 return WDI_STATUS_E_FAILURE;
12028 }
12029
12030 /*-----------------------------------------------------------------------
12031 Get message buffer
12032 -----------------------------------------------------------------------*/
12033 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12034 WDI_TRAFFIC_STATS_IND,
12035 sizeof(tStatsClassBIndParams),
12036 &pSendBuffer, &usDataOffset, &usSendSize))||
12037 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
12038 {
12039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12040 "Unable to get send buffer in Traffic Stats Ind ");
12041 WDI_ASSERT(0);
12042 return WDI_STATUS_E_FAILURE;
12043 }
12044
12045 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12046
12047 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12048
12049 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12050 pTrafficStatsIndParams->pTrafficStats,
12051 pTrafficStatsIndParams->length);
12052
12053 /*-------------------------------------------------------------------------
12054 Send Suspend Request to HAL
12055 -------------------------------------------------------------------------*/
12056 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12057 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12058
12059 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12060 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12061}/*WDI_ProcessTrafficStatsInd*/
12062
Chet Lanctot186b5732013-03-18 10:26:30 -070012063#ifdef WLAN_FEATURE_11W
12064/**
12065 @brief Process Exclude Unencrypted Indications function (called
12066 when Main FSM allows it)
12067
12068 @param pWDICtx: pointer to the WLAN DAL context
12069 pEventData: pointer to the event information structure
12070
12071 @see
12072 @return Result of the function call
12073*/
12074WDI_Status
12075WDI_ProcessExcludeUnencryptInd
12076(
12077 WDI_ControlBlockType* pWDICtx,
12078 WDI_EventInfoType* pEventData
12079)
12080{
12081 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12082 wpt_uint8* pSendBuffer = NULL;
12083 wpt_uint16 usDataOffset = 0;
12084 wpt_uint16 usSendSize = 0;
12085 WDI_Status wdiStatus;
12086 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12088
12089 /*-------------------------------------------------------------------------
12090 Sanity check
12091 -------------------------------------------------------------------------*/
12092 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12093 {
12094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12095 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12096 WDI_ASSERT(0);
12097 return WDI_STATUS_E_FAILURE;
12098 }
12099
12100 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12101
12102 /*-----------------------------------------------------------------------
12103 Get message buffer
12104 -----------------------------------------------------------------------*/
12105 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12106 WDI_EXCLUDE_UNENCRYPTED_IND,
12107 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12108 &pSendBuffer, &usDataOffset, &usSendSize))||
12109 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12110 {
12111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12112 "Unable to get send buffer in Exclude Unencrypted Ind ");
12113 WDI_ASSERT(0);
12114 return WDI_STATUS_E_FAILURE;
12115 }
12116
12117 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12118
12119 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12120
12121 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12122 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12123
12124 /*-------------------------------------------------------------------------
12125 Send Suspend Request to HAL
12126 -------------------------------------------------------------------------*/
12127 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12128 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12129
12130 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12131 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12132}/*WDI_ProcessExcludeUnencryptInd*/
12133#endif
12134
Yue Mab9c86f42013-08-14 15:59:08 -070012135/**
12136 @brief Process Add Periodic Tx Pattern Indication function (called when
12137 Main FSM allows it)
12138
12139 @param pWDICtx: pointer to the WLAN DAL context
12140 pEventData: pointer to the event information structure
12141
12142 @see
12143 @return Result of the function call
12144*/
12145WDI_Status
12146WDI_ProcessAddPeriodicTxPtrnInd
12147(
12148 WDI_ControlBlockType* pWDICtx,
12149 WDI_EventInfoType* pEventData
12150)
12151{
12152 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12153 wpt_uint8* pSendBuffer = NULL;
12154 wpt_uint16 usDataOffset = 0;
12155 wpt_uint16 usSendSize = 0;
12156 WDI_Status wdiStatus;
12157 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12158 wpt_uint8 selfStaIdx = 0;
12159
12160 /*-------------------------------------------------------------------------
12161 Sanity check
12162 -------------------------------------------------------------------------*/
12163 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12164 {
12165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12166 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12167 WDI_ASSERT(0);
12168 return WDI_STATUS_E_FAILURE;
12169 }
12170
12171 pAddPeriodicTxPtrnParams =
12172 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12173
12174 /*------------------------------------------------------------------------
12175 Get message buffer
12176 ------------------------------------------------------------------------*/
12177 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12178 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12179 &pSendBuffer, &usDataOffset, &usSendSize))||
12180 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12181 {
12182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12183 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12184 __func__);
12185 WDI_ASSERT(0);
12186 return WDI_STATUS_E_FAILURE;
12187 }
12188
12189 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12190
12191 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12192 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12193 &selfStaIdx))
12194 {
12195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12196 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012197 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012198
12199 return WDI_STATUS_E_FAILURE;
12200 }
12201
12202 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12203 halAddPeriodicTxPtrn->ucPtrnId =
12204 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12205 halAddPeriodicTxPtrn->usPtrnSize =
12206 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12207 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12208 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12209
12210 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12211 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12212 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12213
12214 /*-------------------------------------------------------------------------
12215 Send Indication to HAL
12216 -------------------------------------------------------------------------*/
12217 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12218 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12219
12220 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12221
12222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12223 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12224
12225 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12226} /* WDI_ProcessAddPeriodicTxPtrnInd */
12227
12228/**
12229 @brief Process Delete Periodic Tx Pattern Indication function (called when
12230 Main FSM allows it)
12231
12232 @param pWDICtx: pointer to the WLAN DAL context
12233 pEventData: pointer to the event information structure
12234
12235 @see
12236 @return Result of the function call
12237*/
12238WDI_Status
12239WDI_ProcessDelPeriodicTxPtrnInd
12240(
12241 WDI_ControlBlockType* pWDICtx,
12242 WDI_EventInfoType* pEventData
12243)
12244{
12245 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12246 wpt_uint8* pSendBuffer = NULL;
12247 wpt_uint16 usDataOffset = 0;
12248 wpt_uint16 usSendSize = 0;
12249 WDI_Status wdiStatus;
12250 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12251 wpt_uint8 selfStaIdx = 0;
12252
12253 /*-------------------------------------------------------------------------
12254 Sanity check
12255 -------------------------------------------------------------------------*/
12256 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12257 {
12258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12259 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12260 WDI_ASSERT(0);
12261 return WDI_STATUS_E_FAILURE;
12262 }
12263
12264 pDelPeriodicTxPtrnParams =
12265 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12266
12267 /*------------------------------------------------------------------------
12268 Get message buffer
12269 ------------------------------------------------------------------------*/
12270 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12271 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12272 &pSendBuffer, &usDataOffset, &usSendSize))||
12273 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12274 {
12275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12276 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12277 __func__);
12278 WDI_ASSERT(0);
12279 return WDI_STATUS_E_FAILURE;
12280 }
12281
12282 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12283
12284 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12285 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12286 &selfStaIdx))
12287 {
12288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12289 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012290 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012291
12292 return WDI_STATUS_E_FAILURE;
12293 }
12294
12295 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12296 halDelPeriodicTxPtrn->uPatternIdBitmap =
12297 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12298
12299 /*-------------------------------------------------------------------------
12300 Send Indication to HAL
12301 -------------------------------------------------------------------------*/
12302 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12303 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12304
12305 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12306
12307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12308 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12309
12310 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12311} /* WDI_ProcessDelPeriodicTxPtrnInd */
12312
Jeff Johnson295189b2012-06-20 16:38:30 -070012313/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012315==========================================================================*/
12316/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012319
12320 @param pWDICtx: pointer to the WLAN DAL context
12321 pEventData: pointer to the event information structure
12322
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 @see
12324 @return Result of the function call
12325*/
12326WDI_Status
12327WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012328(
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 WDI_ControlBlockType* pWDICtx,
12330 WDI_EventInfoType* pEventData
12331)
12332{
12333 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12334 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 wpt_uint16 usDataOffset = 0;
12337 wpt_uint16 usSendSize = 0;
12338 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12340
12341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 -------------------------------------------------------------------------*/
12344 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12345 ( NULL == pEventData->pCBfnc ))
12346 {
12347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 }
12352
12353 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12354 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12355 /*-----------------------------------------------------------------------
12356 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012357 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 sizeof(halSwitchChannelReq.switchChannelParams),
12361 &pSendBuffer, &usDataOffset, &usSendSize))||
12362 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12363 {
12364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012365 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012366 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012369 }
12370
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012373#ifndef WLAN_FEATURE_VOWIFI
12374 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012375 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12376#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012377 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12379
12380#ifdef WLAN_FEATURE_VOWIFI
12381 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12384 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12385 WDI_MAC_ADDR_LEN);
12386 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12387 pwdiSwitchChParams->wdiChInfo.macBSSId,
12388 WDI_MAC_ADDR_LEN);
12389#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 wpalMemoryCopy( pSendBuffer+usDataOffset,
12391 &halSwitchChannelReq.switchChannelParams,
12392 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012393
12394 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012395 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012396
12397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012398 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012400 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12401 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012402}/*WDI_ProcessChannelSwitchReq*/
12403
12404/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012405 @brief Process Channel Switch Request function (called when
12406 Main FSM allows it)
12407
12408 @param pWDICtx: pointer to the WLAN DAL context
12409 pEventData: pointer to the event information structure
12410
12411 @see
12412 @return Result of the function call
12413*/
12414WDI_Status WDI_ProcessChannelSwitchReq_V1
12415(
12416 WDI_ControlBlockType* pWDICtx,
12417 WDI_EventInfoType* pEventData
12418)
12419{
12420 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12421 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12422 wpt_uint8* pSendBuffer = NULL;
12423 wpt_uint16 usDataOffset = 0;
12424 wpt_uint16 usSendSize = 0;
12425 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12427
12428 /*-------------------------------------------------------------------------
12429 Sanity check
12430 -------------------------------------------------------------------------*/
12431 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12432 ( NULL == pEventData->pCBfnc ))
12433 {
12434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12435 "%s: Invalid parameters", __func__);
12436 WDI_ASSERT(0);
12437 return WDI_STATUS_E_FAILURE;
12438 }
12439
12440 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12441 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12442 /*-----------------------------------------------------------------------
12443 Get message buffer
12444 ! TO DO : proper conversion into the HAL Message Request Format
12445 -----------------------------------------------------------------------*/
12446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12447 WDI_CH_SWITCH_REQ_V1,
12448 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12449 &pSendBuffer, &usDataOffset, &usSendSize))||
12450 ( usSendSize < (usDataOffset +
12451 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12452 {
12453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12454 "Unable to get send buffer in channel switch req %p %p %p",
12455 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12456 WDI_ASSERT(0);
12457 return WDI_STATUS_E_FAILURE;
12458 }
12459
12460 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12461 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12462
12463 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12464 pwdiSwitchChParams->wdiChInfo.ucChannel;
12465#ifndef WLAN_FEATURE_VOWIFI
12466 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12467 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12468#endif
12469 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12470 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12471
12472#ifdef WLAN_FEATURE_VOWIFI
12473 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12474 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12475 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12476 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12477 WDI_MAC_ADDR_LEN);
12478 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12479 pwdiSwitchChParams->wdiChInfo.macBSSId,
12480 WDI_MAC_ADDR_LEN);
12481#endif
12482 wpalMemoryCopy( pSendBuffer+usDataOffset,
12483 &halSwitchChannelReq.switchChannelParams_V1,
12484 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12485
12486 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12487 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12488
12489 /*-------------------------------------------------------------------------
12490 Send Switch Channel Request to HAL
12491 -------------------------------------------------------------------------*/
12492 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12493 wdiSwitchChRspCb, pEventData->pUserData,
12494 WDI_CH_SWITCH_RESP_V1);
12495}/*WDI_ProcessChannelSwitchReq_V1*/
12496
12497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012498 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012500
12501 @param pWDICtx: pointer to the WLAN DAL context
12502 pEventData: pointer to the event information structure
12503
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 @see
12505 @return Result of the function call
12506*/
12507WDI_Status
12508WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012509(
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 WDI_ControlBlockType* pWDICtx,
12511 WDI_EventInfoType* pEventData
12512)
12513{
12514 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12515 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 wpt_uint16 usDataOffset = 0;
12520 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012521 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012522
Jeff Johnsone7245742012-09-05 17:12:55 -070012523 tConfigStaReqMsg halConfigStaReqMsg;
12524 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12526
12527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012529 -------------------------------------------------------------------------*/
12530 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12531 ( NULL == pEventData->pCBfnc ))
12532 {
12533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 }
12538
Abhishek Singh6927fa02014-06-27 17:19:55 +053012539 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012540 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12541 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12542 /*-------------------------------------------------------------------------
12543 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012544 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 -------------------------------------------------------------------------*/
12546 wpalMutexAcquire(&pWDICtx->wptMutex);
12547
12548 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12552 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12553 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012554
Jeff Johnsone7245742012-09-05 17:12:55 -070012555 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012556 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12558 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12559 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012560
12561 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 }
12564
12565 /*------------------------------------------------------------------------
12566 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 ------------------------------------------------------------------------*/
12569 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12570 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12572 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12573 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012574
Jeff Johnsone7245742012-09-05 17:12:55 -070012575 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012576 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012577 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 }
12579
12580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012581
12582 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12583#ifdef WLAN_FEATURE_11AC
12584 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012585 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 else
12587#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012588 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012589
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 /*-----------------------------------------------------------------------
12591 Get message buffer
12592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12594 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 {
12598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012599 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 }
12604
12605 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012606 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 &pwdiConfigSTAParams->wdiReqInfo);
12608
12609 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12610 {
12611 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012612 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012613 WDI_STATableFindStaidByAddr(pWDICtx,
12614 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012615 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012616 {
12617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012618 MAC_ADDRESS_STR
12619 ": This station does not exist in the WDI Station Table",
12620 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012622 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 }
12625 }
12626 else
12627 {
12628 /* Need to fill in the STA Index to invalid, since at this point we have not
12629 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012630 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 }
12632
12633 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012634 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012635
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 wpalMemoryCopy( pSendBuffer+usDataOffset,
12637 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012638 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012639
12640 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012641 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012642
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12644 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 sizeof(pWDICtx->wdiCachedConfigStaReq));
12646
12647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12651 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012652}/*WDI_ProcessConfigStaReq*/
12653
12654
12655/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012656 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012658
12659 @param pWDICtx: pointer to the WLAN DAL context
12660 pEventData: pointer to the event information structure
12661
Jeff Johnson295189b2012-06-20 16:38:30 -070012662 @see
12663 @return Result of the function call
12664*/
12665WDI_Status
12666WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012667(
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 WDI_ControlBlockType* pWDICtx,
12669 WDI_EventInfoType* pEventData
12670)
12671{
12672 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12673 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012674 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012676 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 wpt_uint16 usDataOffset = 0;
12678 wpt_uint16 usSendSize = 0;
12679 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012680 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12682
12683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 -------------------------------------------------------------------------*/
12686 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12687 ( NULL == pEventData->pCBfnc ))
12688 {
12689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 }
12694
12695 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12696 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12697 /*-------------------------------------------------------------------------
12698 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012699 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012700 -------------------------------------------------------------------------*/
12701 wpalMutexAcquire(&pWDICtx->wptMutex);
12702
12703 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12707 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12708 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012709
Jeff Johnsone7245742012-09-05 17:12:55 -070012710 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12714 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012715 }
12716 else
12717 {
12718 /*------------------------------------------------------------------------
12719 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 ------------------------------------------------------------------------*/
12722 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12723 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12725 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12726 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12727
12728 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012731 }
12732 }
12733 /* If the link is set to enter IDLE - the Session allocated for this BSS
12734 will be deleted on the Set Link State response coming from HAL
12735 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12738
12739 wpalMutexRelease(&pWDICtx->wptMutex);
12740 /*-----------------------------------------------------------------------
12741 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012742 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012743 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012744
12745 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 sizeof(halLinkStateReqMsg),
12747 &pSendBuffer, &usDataOffset, &usSendSize))||
12748 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12749 {
12750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012751 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12753 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 }
12756
12757 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12758 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12759
12760 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12761 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12762
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12765
Jeff Johnsone7245742012-09-05 17:12:55 -070012766 wpalMemoryCopy( pSendBuffer+usDataOffset,
12767 &halLinkStateReqMsg,
12768 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012769
12770 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012771 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012772
12773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012774 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12777 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012778}/*WDI_ProcessSetLinkStateReq*/
12779
12780
12781/**
12782 @brief Process Get Stats Request function (called when Main FSM
12783 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012784
12785 @param pWDICtx: pointer to the WLAN DAL context
12786 pEventData: pointer to the event information structure
12787
Jeff Johnson295189b2012-06-20 16:38:30 -070012788 @see
12789 @return Result of the function call
12790*/
12791WDI_Status
12792WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012793(
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 WDI_ControlBlockType* pWDICtx,
12795 WDI_EventInfoType* pEventData
12796)
12797{
12798 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12799 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012800 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 wpt_uint16 usDataOffset = 0;
12802 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 WDI_BSSSessionType* pBSSSes = NULL;
12805 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 tHalStatsReqMsg halStatsReqMsg;
12808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12809
12810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 -------------------------------------------------------------------------*/
12813 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12814 ( NULL == pEventData->pCBfnc ) )
12815 {
12816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012820 }
12821
12822 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12823 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12824
12825 /*-------------------------------------------------------------------------
12826 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012827 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012828 -------------------------------------------------------------------------*/
12829 wpalMutexAcquire(&pWDICtx->wptMutex);
12830
12831 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12835 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012836 &macBSSID))
12837 {
12838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012839 "This station does not exist in the WDI Station Table %d",
12840 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012841 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012843 }
12844
Jeff Johnsone7245742012-09-05 17:12:55 -070012845 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12846 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012847 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12849 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12850 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012851
12852 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012854 }
12855
12856 /*------------------------------------------------------------------------
12857 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 ------------------------------------------------------------------------*/
12860 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12861 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12863 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12864 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012865
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 }
12870
12871
12872 wpalMutexRelease(&pWDICtx->wptMutex);
12873
12874 /*-----------------------------------------------------------------------
12875 Get message buffer
12876 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012877 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 sizeof(halStatsReqMsg.statsReqParams),
12879 &pSendBuffer, &usDataOffset, &usSendSize))||
12880 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12881 {
12882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012883 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 }
12888
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 wpalMemoryCopy( pSendBuffer+usDataOffset,
12894 &halStatsReqMsg.statsReqParams,
12895 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012896
12897 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012899
12900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12904 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012905}/*WDI_ProcessGetStatsReq*/
12906
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012907#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012908/**
12909 @brief Process Get Roam Rssi Request function (called when Main FSM
12910 allows it)
12911
12912 @param pWDICtx: pointer to the WLAN DAL context
12913 pEventData: pointer to the event information structure
12914
12915 @see
12916 @return Result of the function call
12917*/
12918WDI_Status
12919WDI_ProcessGetRoamRssiReq
12920(
12921 WDI_ControlBlockType* pWDICtx,
12922 WDI_EventInfoType* pEventData
12923)
12924{
12925 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12926 WDI_GetStatsRspCb wdiGetStatsRspCb;
12927 wpt_uint8* pSendBuffer = NULL;
12928 wpt_uint16 usDataOffset = 0;
12929 wpt_uint16 usSendSize = 0;
12930 wpt_uint8 ucCurrentBSSSesIdx = 0;
12931 WDI_BSSSessionType* pBSSSes = NULL;
12932 wpt_macAddr macBSSID;
12933 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12934 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12936 /*-------------------------------------------------------------------------
12937 Sanity check
12938 -------------------------------------------------------------------------*/
12939 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12940 ( NULL == pEventData->pCBfnc ) )
12941 {
12942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12943 "%s: Invalid parameters", __func__);
12944 WDI_ASSERT(0);
12945 return WDI_STATUS_E_FAILURE;
12946 }
12947
12948 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12949 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12950
12951 /*-------------------------------------------------------------------------
12952 Check to see if we are in the middle of an association, if so queue, if
12953 not it means it is free to process request
12954 -------------------------------------------------------------------------*/
12955 wpalMutexAcquire(&pWDICtx->wptMutex);
12956
12957 /*------------------------------------------------------------------------
12958 Find the BSS for which the request is made
12959 ------------------------------------------------------------------------*/
12960 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12961 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12962 &macBSSID))
12963 {
12964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012965 "This station does not exist in the WDI Station Table %d",
12966 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012967 wpalMutexRelease(&pWDICtx->wptMutex);
12968 return WDI_STATUS_E_FAILURE;
12969 }
12970
12971 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12972 if ( NULL == pBSSSes )
12973 {
12974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12975 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12976 __func__, MAC_ADDR_ARRAY(macBSSID));
12977
12978 wpalMutexRelease(&pWDICtx->wptMutex);
12979 return WDI_STATUS_E_NOT_ALLOWED;
12980 }
12981
12982 /*------------------------------------------------------------------------
12983 Check if this BSS is being currently processed or queued,
12984 if queued - queue the new request as well
12985 ------------------------------------------------------------------------*/
12986 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12987 {
12988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12989 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12990 __func__, MAC_ADDR_ARRAY(macBSSID));
12991
12992 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12993 wpalMutexRelease(&pWDICtx->wptMutex);
12994 return wdiStatus;
12995 }
12996
12997 wpalMutexRelease(&pWDICtx->wptMutex);
12998
12999 /*-----------------------------------------------------------------------
13000 Get message buffer
13001 -----------------------------------------------------------------------*/
13002 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
13003 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
13004 &pSendBuffer, &usDataOffset, &usSendSize))||
13005 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
13006 {
13007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013008 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013009 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
13010 WDI_ASSERT(0);
13011 return WDI_STATUS_E_FAILURE;
13012 }
13013
13014 halRssiRoamReqMsg.roamRssiReqParams.staId =
13015 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
13016 wpalMemoryCopy( pSendBuffer+usDataOffset,
13017 &halRssiRoamReqMsg.roamRssiReqParams,
13018 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
13019
13020 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
13021 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
13022
13023 /*-------------------------------------------------------------------------
13024 Send Get STA Request to HAL
13025 -------------------------------------------------------------------------*/
13026 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13027 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
13028}/*WDI_ProcessGetRoamRssiReq*/
13029#endif
13030
Jeff Johnson295189b2012-06-20 16:38:30 -070013031/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013034
13035 @param pWDICtx: pointer to the WLAN DAL context
13036 pEventData: pointer to the event information structure
13037
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 @see
13039 @return Result of the function call
13040*/
13041WDI_Status
13042WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013043(
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 WDI_ControlBlockType* pWDICtx,
13045 WDI_EventInfoType* pEventData
13046)
13047{
13048 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13049 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13050
Jeff Johnsone7245742012-09-05 17:12:55 -070013051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 wpt_uint16 usDataOffset = 0;
13053 wpt_uint16 usSendSize = 0;
13054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13055
13056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 -------------------------------------------------------------------------*/
13059 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13060 ( NULL == pEventData->pCBfnc))
13061 {
13062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013066 }
13067
13068 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13069 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13070
13071 /*-----------------------------------------------------------------------
13072 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013073 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 -----------------------------------------------------------------------*/
13075
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013077 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13078 &pSendBuffer, &usDataOffset, &usSendSize))||
13079 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13080 {
13081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013082 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 }
13087
Jeff Johnsone7245742012-09-05 17:12:55 -070013088 wpalMemoryCopy( pSendBuffer+usDataOffset,
13089 &pwdiUpdateCfgParams->uConfigBufferLen,
13090 sizeof(wpt_uint32));
13091 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13092 pwdiUpdateCfgParams->pConfigBuffer,
13093 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013094
13095 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013097
13098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 -------------------------------------------------------------------------*/
13101
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13103 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013104
13105}/*WDI_ProcessUpdateCfgReq*/
13106
13107
13108/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013109 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013110 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013111
13112 @param pWDICtx: pointer to the WLAN DAL context
13113 pEventData: pointer to the event information structure
13114
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 @see
13116 @return Result of the function call
13117*/
13118WDI_Status
13119WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013120(
Jeff Johnson295189b2012-06-20 16:38:30 -070013121 WDI_ControlBlockType* pWDICtx,
13122 WDI_EventInfoType* pEventData
13123)
13124{
13125 WDI_AddBAReqParamsType* pwdiAddBAParams;
13126 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013127 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013128 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013129 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 wpt_uint16 usDataOffset = 0;
13131 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013132 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 wpt_macAddr macBSSID;
13134
13135 tAddBAReqMsg halAddBAReq;
13136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13137
13138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 -------------------------------------------------------------------------*/
13141 if (( NULL == pEventData ) ||
13142 ( NULL == pEventData->pEventData) ||
13143 ( NULL == pEventData->pCBfnc ))
13144 {
13145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013146 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 }
13150
13151 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13152 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13153
13154 /*-------------------------------------------------------------------------
13155 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013156 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 -------------------------------------------------------------------------*/
13158 wpalMutexAcquire(&pWDICtx->wptMutex);
13159
13160 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013161 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013162 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013163 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13164 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 &macBSSID))
13166 {
13167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013168 "This station does not exist in the WDI Station Table %d",
13169 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 }
13173
Jeff Johnsone7245742012-09-05 17:12:55 -070013174 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13175 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13178 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13179 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013180
13181 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013182 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 }
13184
13185 /*------------------------------------------------------------------------
13186 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 ------------------------------------------------------------------------*/
13189 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13190 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13192 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13193 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013194
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013198 }
13199
13200
13201 wpalMutexRelease(&pWDICtx->wptMutex);
13202 /*-----------------------------------------------------------------------
13203 Get message buffer
13204 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 sizeof(halAddBAReq.addBAParams),
13207 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13210 {
13211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013212 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 }
13217
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13220 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13221#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013222 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013223 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13224#endif
13225
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 wpalMemoryCopy( pSendBuffer+usDataOffset,
13227 &halAddBAReq.addBAParams,
13228 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013229
13230 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013231 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013232
13233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013236 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13237 wdiAddBARspCb, pEventData->pUserData,
13238 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013239}/*WDI_ProcessAddBAReq*/
13240
13241
13242
13243/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013246
13247 @param pWDICtx: pointer to the WLAN DAL context
13248 pEventData: pointer to the event information structure
13249
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 @see
13251 @return Result of the function call
13252*/
13253WDI_Status
13254WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013255(
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 WDI_ControlBlockType* pWDICtx,
13257 WDI_EventInfoType* pEventData
13258)
13259{
13260 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13261 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013262 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013264 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013265 wpt_uint16 usDataOffset = 0;
13266 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013267 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 wpt_uint16 index;
13269 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013270
Jeff Johnson295189b2012-06-20 16:38:30 -070013271 tTriggerBAReqMsg halTriggerBAReq;
13272 tTriggerBaReqCandidate* halTriggerBACandidate;
13273 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13274 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13275
13276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 -------------------------------------------------------------------------*/
13279 if (( NULL == pEventData ) ||
13280 ( NULL == pEventData->pEventData ) ||
13281 ( NULL == pEventData->pCBfnc ))
13282 {
13283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 }
13288
13289 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13290 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13291 /*-------------------------------------------------------------------------
13292 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 -------------------------------------------------------------------------*/
13295 wpalMutexAcquire(&pWDICtx->wptMutex);
13296
13297 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013298 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13301 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013302 &macBSSID))
13303 {
13304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013305 "This station does not exist in the WDI Station Table %d",
13306 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013309 }
13310
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13312 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013313 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13315 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13316 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013317
13318 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013319 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 }
13321
13322 /*------------------------------------------------------------------------
13323 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013324 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013325 ------------------------------------------------------------------------*/
13326 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13327 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13329 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13330 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013331
Jeff Johnsone7245742012-09-05 17:12:55 -070013332 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013333 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013334 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013335 }
13336
13337
13338 wpalMutexRelease(&pWDICtx->wptMutex);
13339 /*-----------------------------------------------------------------------
13340 Get message buffer
13341 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13343 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013344 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13347 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013350 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013351 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13352 {
13353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013354 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 }
13359
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13364
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 wpalMemoryCopy( pSendBuffer+usDataOffset,
13366 &halTriggerBAReq.triggerBAParams,
13367 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013368
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13371 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13372 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013373
13374 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 index++)
13376 {
13377 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13378 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13379 halTriggerBACandidate++;
13380 wdiTriggerBACandidate++;
13381 }
13382
13383 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013384 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013385
13386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13390 wdiTriggerBARspCb, pEventData->pUserData,
13391 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013392}/*WDI_ProcessTriggerBAReq*/
13393
13394
13395
13396/**
13397 @brief Process Update Beacon Params Request function (called when Main FSM
13398 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013399
13400 @param pWDICtx: pointer to the WLAN DAL context
13401 pEventData: pointer to the event information structure
13402
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 @see
13404 @return Result of the function call
13405*/
13406WDI_Status
13407WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013408(
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 WDI_ControlBlockType* pWDICtx,
13410 WDI_EventInfoType* pEventData
13411)
13412{
13413 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13414 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 wpt_uint16 usDataOffset = 0;
13417 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13420
13421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 -------------------------------------------------------------------------*/
13424 if (( NULL == pEventData ) ||
13425 ( NULL == pEventData->pEventData) ||
13426 ( NULL == pEventData->pCBfnc))
13427 {
13428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 }
13433
13434 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13435 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13436 /*-----------------------------------------------------------------------
13437 Get message buffer
13438 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013439 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013440 sizeof(halUpdateBeaconParams),
13441 &pSendBuffer, &usDataOffset, &usSendSize))||
13442 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13443 {
13444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013445 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013446 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 }
13450
13451 /*BSS Index of the BSS*/
13452 halUpdateBeaconParams.bssIdx =
13453 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13454 /*shortPreamble mode. HAL should update all the STA rates when it
13455 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013456 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13458 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013459 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13461 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13464
13465 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013467 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013468 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013469 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13478 halUpdateBeaconParams.fRIFSMode =
13479 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13482
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13484 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013485
13486 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013488
13489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13493 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013494}/*WDI_ProcessUpdateBeaconParamsReq*/
13495
13496
13497
13498/**
13499 @brief Process Send Beacon template Request function (called when Main FSM
13500 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013501
13502 @param pWDICtx: pointer to the WLAN DAL context
13503 pEventData: pointer to the event information structure
13504
Jeff Johnson295189b2012-06-20 16:38:30 -070013505 @see
13506 @return Result of the function call
13507*/
13508WDI_Status
13509WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013510(
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 WDI_ControlBlockType* pWDICtx,
13512 WDI_EventInfoType* pEventData
13513)
13514{
13515 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13516 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 wpt_uint16 usDataOffset = 0;
13519 wpt_uint16 usSendSize = 0;
13520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13521
13522 tSendBeaconReqMsg halSendBeaconReq;
13523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 -------------------------------------------------------------------------*/
13526 if (( NULL == pEventData ) ||
13527 ( NULL == pEventData->pEventData ) ||
13528 ( NULL == pEventData->pCBfnc ))
13529 {
13530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 }
13535
13536 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13537 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13538 /*-----------------------------------------------------------------------
13539 Get message buffer
13540 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013542 sizeof(halSendBeaconReq.sendBeaconParam),
13543 &pSendBuffer, &usDataOffset, &usSendSize))||
13544 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13545 {
13546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013547 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013548 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013551 }
13552
13553 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13554 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13555 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013556 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013557 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13558 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13559 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13560 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013561 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013563 /* usP2PIeOffset should be atleast greater than timIeOffset */
13564 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13565 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13566 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13567 {
13568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13569 "Invalid usP2PIeOffset %hu",
13570 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13571 WDI_ASSERT(0);
13572 return WDI_STATUS_E_FAILURE;
13573 }
13574
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013577
Jeff Johnsone7245742012-09-05 17:12:55 -070013578 wpalMemoryCopy( pSendBuffer+usDataOffset,
13579 &halSendBeaconReq.sendBeaconParam,
13580 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013581
13582 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013584
13585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013586 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013588 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13589 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013590}/*WDI_ProcessSendBeaconParamsReq*/
13591
13592/**
13593 @brief Process Update Beacon Params Request function (called when Main FSM
13594 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013595
13596 @param pWDICtx: pointer to the WLAN DAL context
13597 pEventData: pointer to the event information structure
13598
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 @see
13600 @return Result of the function call
13601*/
13602WDI_Status
13603WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013604(
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 WDI_ControlBlockType* pWDICtx,
13606 WDI_EventInfoType* pEventData
13607)
13608{
13609 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13610 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013611 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 wpt_uint16 usDataOffset = 0;
13613 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013614 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13616
13617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 -------------------------------------------------------------------------*/
13620 if (( NULL == pEventData ) ||
13621 ( NULL == pEventData->pEventData) ||
13622 ( NULL == pEventData->pCBfnc))
13623 {
13624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 }
13629
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13634 /*-----------------------------------------------------------------------
13635 Get message buffer
13636 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 sizeof(halUpdateProbeRspTmplParams),
13639 &pSendBuffer, &usDataOffset, &usSendSize))||
13640 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13641 {
13642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013643 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013644 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 }
13648
13649 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013650 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 WDI_MAC_ADDR_LEN);
13652
Jeff Johnsone7245742012-09-05 17:12:55 -070013653 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13655
13656 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13657 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013659
13660
13661 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13662 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13663 WDI_PROBE_REQ_BITMAP_IE_LEN);
13664
Jeff Johnsone7245742012-09-05 17:12:55 -070013665 wpalMemoryCopy( pSendBuffer+usDataOffset,
13666 &halUpdateProbeRspTmplParams,
13667 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013668
13669 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013671
13672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013674 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013675 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13676 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13677 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013678}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13679
13680/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013681 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013682 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013683
13684 @param pWDICtx: pointer to the WLAN DAL context
13685 pEventData: pointer to the event information structure
13686
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 @see
13688 @return Result of the function call
13689*/
13690WDI_Status
13691WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013692(
Jeff Johnson295189b2012-06-20 16:38:30 -070013693 WDI_ControlBlockType* pWDICtx,
13694 WDI_EventInfoType* pEventData
13695)
13696{
13697
13698 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13699 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13700
13701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 -------------------------------------------------------------------------*/
13704 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013707 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13709 {
13710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013711 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 }
13715
13716 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013717 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013718 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13719
13720 /*cache the wdi nv request message here if the the first fragment
13721 * To issue the request to HAL for the next fragment */
13722 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13723 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013724 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13725 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13727
13728 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13729 pWDICtx->pRspCBUserData = pEventData->pUserData;
13730 }
13731
13732 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13733}
13734
13735/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013737 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013738
13739 @param pWDICtx: pointer to the WLAN DAL context
13740 pEventData: pointer to the event information structure
13741
Jeff Johnson295189b2012-06-20 16:38:30 -070013742 @see
13743 @return Result of the function call
13744*/
13745WDI_Status WDI_ProcessSetMaxTxPowerReq
13746(
13747 WDI_ControlBlockType* pWDICtx,
13748 WDI_EventInfoType* pEventData
13749)
13750{
13751 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13752 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013753 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 wpt_uint16 usDataOffset = 0;
13755 wpt_uint16 usSendSize = 0;
13756 tSetMaxTxPwrReq halSetMaxTxPower;
13757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13758
13759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 -------------------------------------------------------------------------*/
13762 if (( NULL == pEventData ) ||
13763 ( NULL == pEventData->pEventData ) ||
13764 ( NULL == pEventData->pCBfnc ))
13765 {
13766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013767 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013773 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013774 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13775
13776 /*-----------------------------------------------------------------------
13777 Get message buffer
13778 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013779if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13781 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013783)))
13784 {
13785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013786 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13788 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 }
13791
13792 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13793 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13794 WDI_MAC_ADDR_LEN);
13795
13796 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13797 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13798 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013799 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013800 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013801
13802 wpalMemoryCopy( pSendBuffer+usDataOffset,
13803 &halSetMaxTxPower.setMaxTxPwrParams,
13804 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013805
13806 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013807 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013808
13809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013810 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013811 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013812 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13813 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13814 WDI_SET_MAX_TX_POWER_RESP);
13815
Jeff Johnson295189b2012-06-20 16:38:30 -070013816}
13817
Arif Hussaina5ebce02013-08-09 15:09:58 -070013818/*
13819 @brief Process Set Max Tx Power Per Band Request function (called when Main
13820 FSM allows it)
13821
13822 @param pWDICtx: pointer to the WLAN DAL context
13823 pEventData: pointer to the event information structure
13824
13825 @see
13826 @return Result of the function call
13827*/
13828WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13829(
13830 WDI_ControlBlockType* pWDICtx,
13831 WDI_EventInfoType* pEventData
13832)
13833{
13834 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13835 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13836 wpt_uint8* pSendBuffer = NULL;
13837 wpt_uint16 usDataOffset = 0;
13838 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013839 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013840 WDI_Status rValue = WDI_STATUS_SUCCESS;
13841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13842
13843 /*-------------------------------------------------------------------------
13844 Sanity check
13845 -------------------------------------------------------------------------*/
13846 if (( NULL == pEventData ) ||
13847 ( NULL == pEventData->pEventData ) ||
13848 ( NULL == pEventData->pCBfnc ))
13849 {
13850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13851 "%s: Invalid parameters", __func__);
13852 WDI_ASSERT(0);
13853 return WDI_STATUS_E_FAILURE;
13854 }
13855 pwdiSetMaxTxPowerPerBandParams = \
13856 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13857
13858 wdiSetMaxTxPowerPerBandRspCb = \
13859 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13860
13861 /*-----------------------------------------------------------------------
13862 Get message buffer
13863 -----------------------------------------------------------------------*/
13864
13865 rValue = WDI_GetMessageBuffer(pWDICtx,
13866 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13867 sizeof(tSetMaxTxPwrPerBandParams),
13868 &pSendBuffer, &usDataOffset, &usSendSize);
13869
13870 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13871 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13872 {
13873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13874 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13875 pEventData, pwdiSetMaxTxPowerPerBandParams,
13876 wdiSetMaxTxPowerPerBandRspCb);
13877 WDI_ASSERT(0);
13878 return WDI_STATUS_E_FAILURE;
13879 }
13880
13881
Arif Hussainf8f080c2014-04-03 09:48:36 -070013882 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13883 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013884 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13885
Arif Hussainf8f080c2014-04-03 09:48:36 -070013886 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013887 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13888
13889 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13890 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13891
13892 /*-------------------------------------------------------------------------
13893 Send Set Max Tx Power Per Band Request to HAL
13894 -------------------------------------------------------------------------*/
13895 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13896 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13897 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13898}
13899
schang86c22c42013-03-13 18:41:24 -070013900/**
13901 @brief Process Set Tx Power Request function (called when Main
13902 FSM allows it)
13903
13904 @param pWDICtx: pointer to the WLAN DAL context
13905 pEventData: pointer to the event information structure
13906
13907 @see
13908 @return Result of the function call
13909*/
13910WDI_Status WDI_ProcessSetTxPowerReq
13911(
13912 WDI_ControlBlockType* pWDICtx,
13913 WDI_EventInfoType* pEventData
13914)
13915{
13916 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13917 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13918 wpt_uint8* pSendBuffer = NULL;
13919 wpt_uint16 usDataOffset = 0;
13920 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013921 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13923
13924 /*-------------------------------------------------------------------------
13925 Sanity check
13926 -------------------------------------------------------------------------*/
13927 if (( NULL == pEventData ) ||
13928 ( NULL == pEventData->pEventData ) ||
13929 ( NULL == pEventData->pCBfnc ))
13930 {
13931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13932 "%s: Invalid parameters", __func__);
13933 WDI_ASSERT(0);
13934 return WDI_STATUS_E_FAILURE;
13935 }
13936
13937 pwdiSetTxPowerParams =
13938 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13939 wdiSetTxPowerRspCb =
13940 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13941
13942 /*-----------------------------------------------------------------------
13943 Get message buffer
13944 -----------------------------------------------------------------------*/
13945 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13946 sizeof(tSetTxPwrReqParams),
13947 &pSendBuffer, &usDataOffset, &usSendSize))||
13948 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13949 )))
13950 {
13951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013952 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013953 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13954 WDI_ASSERT(0);
13955 return WDI_STATUS_E_FAILURE;
13956 }
13957
Leo Chang9a43db92013-03-25 17:39:58 -070013958 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13959 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13960 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013961
13962 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13963 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13964
13965 /*-------------------------------------------------------------------------
13966 Send Set Tx Power Request to HAL
13967 -------------------------------------------------------------------------*/
13968 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13969 wdiSetTxPowerRspCb, pEventData->pUserData,
13970 WDI_SET_TX_POWER_RESP);
13971}
Jeff Johnson295189b2012-06-20 16:38:30 -070013972
13973/**
13974 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13975 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013976
13977 @param pWDICtx: pointer to the WLAN DAL context
13978 pEventData: pointer to the event information structure
13979
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 @see
13981 @return Result of the function call
13982*/
13983WDI_Status
13984WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013985(
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 WDI_ControlBlockType* pWDICtx,
13987 WDI_EventInfoType* pEventData
13988)
13989{
13990 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13991 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 wpt_uint16 usDataOffset = 0;
13994 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013995 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13997
13998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 -------------------------------------------------------------------------*/
14001 if (( NULL == pEventData ) ||
14002 ( NULL == pEventData->pEventData) ||
14003 ( NULL == pEventData->pCBfnc))
14004 {
14005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014006 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 }
14010
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014012 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014013 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
14015 /*-----------------------------------------------------------------------
14016 Get message buffer
14017 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014018 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14019 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014020 sizeof(halSetP2PGONOAParams),
14021 &pSendBuffer, &usDataOffset, &usSendSize))||
14022 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
14023 {
14024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014025 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014026 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
14027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 }
14030
Jeff Johnsone7245742012-09-05 17:12:55 -070014031 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070014034 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
14035 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070014036 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014038 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014039 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14044
Jeff Johnsone7245742012-09-05 17:12:55 -070014045 wpalMemoryCopy( pSendBuffer+usDataOffset,
14046 &halSetP2PGONOAParams,
14047 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014048
14049 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014050 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014051
14052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014055 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14056 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14057 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014058}/*WDI_ProcessP2PGONOAReq*/
14059
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014060#ifdef FEATURE_WLAN_TDLS
14061
14062/**
14063 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14064 allows it)
14065
14066 @param pWDICtx: pointer to the WLAN DAL context
14067 pEventData: pointer to the event information structure
14068
14069 @see
14070 @return Result of the function call
14071*/
14072WDI_Status
14073WDI_ProcessTdlsLinkEstablishReq
14074(
14075 WDI_ControlBlockType* pWDICtx,
14076 WDI_EventInfoType* pEventData
14077)
14078{
14079 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14080 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14081 wpt_uint8* pSendBuffer = NULL;
14082 wpt_uint16 usDataOffset = 0;
14083 wpt_uint16 usSendSize = 0;
14084
14085 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14087
14088 /*-------------------------------------------------------------------------
14089 Sanity check
14090 -------------------------------------------------------------------------*/
14091 if (( NULL == pEventData ) ||
14092 ( NULL == pEventData->pEventData) ||
14093 ( NULL == pEventData->pCBfnc))
14094 {
14095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14096 "%s: Invalid parameters", __func__);
14097 WDI_ASSERT(0);
14098 return WDI_STATUS_E_FAILURE;
14099 }
14100 pwdiTDLSLinkEstablishReqParams =
14101 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14102 wdiTDLSLinkEstablishReqRspCb =
14103 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14104
14105
14106 /*-----------------------------------------------------------------------
14107 Get message buffer
14108 -----------------------------------------------------------------------*/
14109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14110 WDI_TDLS_LINK_ESTABLISH_REQ,
14111 sizeof(halSetTDLSLinkEstablishParams),
14112 &pSendBuffer, &usDataOffset, &usSendSize))||
14113 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14114 {
14115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014116 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014117 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14118 WDI_ASSERT(0);
14119 return WDI_STATUS_E_FAILURE;
14120 }
14121
14122 halSetTDLSLinkEstablishParams.staIdx =
14123 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14124 halSetTDLSLinkEstablishParams.bIsResponder =
14125 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14126 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14127 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14128 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14129 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14130 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14131 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14132 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14133 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14134 halSetTDLSLinkEstablishParams.aAck = 0;
14135 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14136 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14137 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014138 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14139 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14140
14141 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14142 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14143 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14144 halSetTDLSLinkEstablishParams.validChannelsLen =
14145 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14146
14147 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14148 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14149 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14150 halSetTDLSLinkEstablishParams.validOperClassesLen =
14151 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014152
14153 wpalMemoryCopy( pSendBuffer+usDataOffset,
14154 &halSetTDLSLinkEstablishParams,
14155 sizeof(halSetTDLSLinkEstablishParams));
14156
14157 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14158 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14159
14160 /*-------------------------------------------------------------------------
14161 Send Update Probe Resp Template Request to HAL
14162 -------------------------------------------------------------------------*/
14163 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14164 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14165 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14166 return 0;
14167}/*WDI_ProcessTdlsLinkEstablishReq*/
14168
14169
Atul Mittalc0f739f2014-07-31 13:47:47 +053014170/**
14171 @brief sends the channel switch command to f/w (called when Main FSM
14172 allows it)
14173
14174 @param pWDICtx: pointer to the WLAN DAL context
14175 pEventData: pointer to the event information structure
14176
14177 @see
14178 @return Result of the function call
14179*/
14180WDI_Status
14181WDI_ProcessTdlsChanSwitchReq
14182(
14183 WDI_ControlBlockType* pWDICtx,
14184 WDI_EventInfoType* pEventData
14185)
14186{
14187 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14188 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14189 wpt_uint8* pSendBuffer = NULL;
14190 wpt_uint16 usDataOffset = 0;
14191 wpt_uint16 usSendSize = 0;
14192 //WDI_Status wdiStatus;
14193 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14195
14196 /*-------------------------------------------------------------------------
14197 Sanity check
14198 -------------------------------------------------------------------------*/
14199 if (( NULL == pEventData ) ||
14200 ( NULL == pEventData->pEventData))
14201 {
14202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14203 "%s: Invalid parameters", __func__);
14204 WDI_ASSERT(0);
14205 return WDI_STATUS_E_FAILURE;
14206 }
14207 pwdiTDLSChanSwitchReqParams =
14208 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14209 wdiTDLSChanSwitchReqRspCb =
14210 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14211
14212 /*-----------------------------------------------------------------------
14213 Get message buffer
14214 -----------------------------------------------------------------------*/
14215 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14216 WDI_TDLS_CHAN_SWITCH_REQ,
14217 sizeof(halSetTDLSChanSwitchParams),
14218 &pSendBuffer, &usDataOffset, &usSendSize))||
14219 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14220 {
14221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14222 "Unable to get send buffer in Channel Switch REQ %p %p %p",
14223 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14224 WDI_ASSERT(0);
14225 return WDI_STATUS_E_FAILURE;
14226 }
14227
14228 halSetTDLSChanSwitchParams.staIdx =
14229 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14230 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14231 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14232 halSetTDLSChanSwitchParams.targetOperClass =
14233 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14234 halSetTDLSChanSwitchParams.targetChannel =
14235 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14236 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14237 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14238 wpalMemoryCopy( pSendBuffer+usDataOffset,
14239 &halSetTDLSChanSwitchParams,
14240 sizeof(halSetTDLSChanSwitchParams));
14241
14242 pWDICtx->wdiReqStatusCB = NULL;
14243 pWDICtx->pReqStatusUserData = NULL;
14244
14245 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14246 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14247 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14248}/*WDI_ProcessTdlsChanSwitchReq*/
14249
14250#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014251
Jeff Johnson295189b2012-06-20 16:38:30 -070014252
14253
14254/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 @param None
14258
14259 @see
14260 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014261*/
14262void
14263WDI_SetPowerStateCb
14264(
14265 wpt_status status,
14266 unsigned int dxePhyAddr,
14267 void *pContext
14268)
14269{
14270 wpt_status wptStatus;
14271 WDI_ControlBlockType *pCB = NULL;
14272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 /*
14274 * Trigger the event to bring the Enter BMPS req function to come
14275 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014276*/
14277 if( NULL != pContext )
14278 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 }
14281 else
14282 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014283 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 pCB = &gWDICb;
14285 }
Mihir Shetea4306052014-03-25 00:02:54 +053014286
14287 if(eWLAN_PAL_STATUS_SUCCESS == status )
14288 {
14289 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14290 }
14291 else
14292 {
14293 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14294 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 pCB->dxePhyAddr = dxePhyAddr;
14296 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14297 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14298 {
14299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14300 "Failed to set an event");
14301
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 }
14304 return;
14305}
14306
14307
14308/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014311
14312 @param pWDICtx: pointer to the WLAN DAL context
14313 pEventData: pointer to the event information structure
14314
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 @see
14316 @return Result of the function call
14317*/
14318WDI_Status
14319WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014320(
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 WDI_ControlBlockType* pWDICtx,
14322 WDI_EventInfoType* pEventData
14323)
14324{
Jeff Johnson43971f52012-07-17 12:26:56 -070014325 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014326 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 wpt_uint16 usDataOffset = 0;
14329 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014330 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14332
14333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014336 if ((NULL == pEventData ) ||
14337 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14338 (NULL == (pwdiEnterImpsReqParams =
14339 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 {
14341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014344 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 }
14346
14347 /*-----------------------------------------------------------------------
14348 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014349 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 0,
14353 &pSendBuffer, &usDataOffset, &usSendSize))||
14354 ( usSendSize < (usDataOffset )))
14355 {
14356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014357 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 pEventData, wdiEnterImpsRspCb);
14359 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014360 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014361 }
14362
14363 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014364 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14365 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 {
14367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14368 "WDI Init failed to reset an event");
14369
Jeff Johnsone7245742012-09-05 17:12:55 -070014370 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014371 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 }
14373
14374 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014375 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14376 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014378 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014379 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014380 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014381 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014382
14383 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014386 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14387 WDI_SET_POWER_STATE_TIMEOUT);
14388 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014389 {
14390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14391 "WDI Init failed to wait on an event");
14392
Karthick S1fa70262015-08-20 13:28:14 +053014393 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014394 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014395 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 }
14397
Mihir Shetea4306052014-03-25 00:02:54 +053014398 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14399 {
14400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14401 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14402
14403 goto fail;
14404 }
14405
14406 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14407 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14412 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014413
14414fail:
14415 // Release the message buffer so we don't leak
14416 wpalMemoryFree(pSendBuffer);
14417
14418failRequest:
14419 //WDA should have failure check to avoid the memory leak
14420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014421}/*WDI_ProcessEnterImpsReq*/
14422
14423/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014426
14427 @param pWDICtx: pointer to the WLAN DAL context
14428 pEventData: pointer to the event information structure
14429
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 @see
14431 @return Result of the function call
14432*/
14433WDI_Status
14434WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014435(
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 WDI_ControlBlockType* pWDICtx,
14437 WDI_EventInfoType* pEventData
14438)
14439{
14440 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 wpt_uint16 usDataOffset = 0;
14443 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014444 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14446
14447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 -------------------------------------------------------------------------*/
14450 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014451 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14452 (NULL == (pwdiExitImpsReqParams =
14453 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 {
14455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014456 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 }
14460
14461 /*-----------------------------------------------------------------------
14462 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 0,
14467 &pSendBuffer, &usDataOffset, &usSendSize))||
14468 ( usSendSize < (usDataOffset )))
14469 {
14470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014471 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 pEventData, wdiExitImpsRspCb);
14473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014476 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14477 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14482 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014483}/*WDI_ProcessExitImpsReq*/
14484
14485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014488
14489 @param pWDICtx: pointer to the WLAN DAL context
14490 pEventData: pointer to the event information structure
14491
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 @see
14493 @return Result of the function call
14494*/
14495WDI_Status
14496WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014497(
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 WDI_ControlBlockType* pWDICtx,
14499 WDI_EventInfoType* pEventData
14500)
14501{
14502 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14503 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 wpt_uint16 usDataOffset = 0;
14506 wpt_uint16 usSendSize = 0;
14507 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014508 wpt_status wptStatus;
14509
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14511
14512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014514 -------------------------------------------------------------------------*/
14515 if (( NULL == pEventData ) ||
14516 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14517 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14518 {
14519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014522 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 }
14524
14525 /*-----------------------------------------------------------------------
14526 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014527 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 sizeof(enterBmpsReq),
14531 &pSendBuffer, &usDataOffset, &usSendSize))||
14532 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14533 {
14534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014535 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14537 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014538 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014539 }
14540
14541 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014542 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14543 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 {
14545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14546 "WDI Init failed to reset an event");
14547
Jeff Johnsone7245742012-09-05 17:12:55 -070014548 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014549 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 }
14551
14552 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014553 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14554 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14555 {
14556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014557 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014558 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014559 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014560 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014561
14562/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014563 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014565 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14566 WDI_SET_POWER_STATE_TIMEOUT);
14567 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 {
14569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14570 "WDI Init failed to wait on an event");
14571
Karthick S1fa70262015-08-20 13:28:14 +053014572 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014574 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014575 }
14576
14577 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14578
14579 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14580 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14581 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14582 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14583
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014584 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14586 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14587 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14588
14589 wpalMemoryCopy( pSendBuffer+usDataOffset,
14590 &enterBmpsReq,
14591 sizeof(enterBmpsReq));
14592
14593 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014595
14596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014597 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014599 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14600 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014601
14602fail:
14603 // Release the message buffer so we don't leak
14604 wpalMemoryFree(pSendBuffer);
14605
14606failRequest:
14607 //WDA should have failure check to avoid the memory leak
14608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014609}/*WDI_ProcessEnterBmpsReq*/
14610
14611/**
14612 @brief Process Exit BMPS Request function (called when Main FSM
14613 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014614
14615 @param pWDICtx: pointer to the WLAN DAL context
14616 pEventData: pointer to the event information structure
14617
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 @see
14619 @return Result of the function call
14620*/
14621WDI_Status
14622WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014623(
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 WDI_ControlBlockType* pWDICtx,
14625 WDI_EventInfoType* pEventData
14626)
14627{
14628 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14629 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 wpt_uint16 usDataOffset = 0;
14632 wpt_uint16 usSendSize = 0;
14633 tHalExitBmpsReqParams exitBmpsReq;
14634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14635
14636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 -------------------------------------------------------------------------*/
14639 if (( NULL == pEventData ) ||
14640 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14641 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14642 {
14643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 }
14648
14649 /*-----------------------------------------------------------------------
14650 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 sizeof(exitBmpsReq),
14655 &pSendBuffer, &usDataOffset, &usSendSize))||
14656 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14657 {
14658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014659 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014660 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 }
14664 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14665
Jeff Johnsone7245742012-09-05 17:12:55 -070014666 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14667
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 wpalMemoryCopy( pSendBuffer+usDataOffset,
14669 &exitBmpsReq,
14670 sizeof(exitBmpsReq));
14671
14672 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014674
14675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14679 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014680}/*WDI_ProcessExitBmpsReq*/
14681
14682/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014685
14686 @param pWDICtx: pointer to the WLAN DAL context
14687 pEventData: pointer to the event information structure
14688
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 @see
14690 @return Result of the function call
14691*/
14692WDI_Status
14693WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014694(
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 WDI_ControlBlockType* pWDICtx,
14696 WDI_EventInfoType* pEventData
14697)
14698{
14699 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14700 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 wpt_uint16 usDataOffset = 0;
14703 wpt_uint16 usSendSize = 0;
14704 tUapsdReqParams enterUapsdReq;
14705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14706
14707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 -------------------------------------------------------------------------*/
14710 if (( NULL == pEventData ) ||
14711 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14712 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14713 {
14714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 }
14719
14720 /*-----------------------------------------------------------------------
14721 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 sizeof(enterUapsdReq),
14726 &pSendBuffer, &usDataOffset, &usSendSize))||
14727 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14728 {
14729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014730 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 }
14735
14736 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14737 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14738 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14739 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14740 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14741 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14742 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14743 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014745
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 wpalMemoryCopy( pSendBuffer+usDataOffset,
14747 &enterUapsdReq,
14748 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014749
14750 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014752
14753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14757 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014758}/*WDI_ProcessEnterUapsdReq*/
14759
14760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014763
14764 @param pWDICtx: pointer to the WLAN DAL context
14765 pEventData: pointer to the event information structure
14766
Jeff Johnson295189b2012-06-20 16:38:30 -070014767 @see
14768 @return Result of the function call
14769*/
14770WDI_Status
14771WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014772(
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 WDI_ControlBlockType* pWDICtx,
14774 WDI_EventInfoType* pEventData
14775)
14776{
14777 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 wpt_uint16 usDataOffset = 0;
14780 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014781 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14782 wpt_uint8 bssIdx = 0;
14783
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14785
14786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014788 -------------------------------------------------------------------------*/
14789 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014790 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14792 {
14793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 }
14798
14799 /*-----------------------------------------------------------------------
14800 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014804 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014806 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 {
14808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014809 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 pEventData, wdiExitUapsdRspCb);
14811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014813 }
14814
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014815 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14816
14817 wpalMemoryCopy( pSendBuffer+usDataOffset,
14818 &bssIdx,
14819 sizeof(wpt_uint8));
14820
14821 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14822 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14823
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014827 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14828 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014829}/*WDI_ProcessExitUapsdReq*/
14830
14831/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014834
14835 @param pWDICtx: pointer to the WLAN DAL context
14836 pEventData: pointer to the event information structure
14837
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 @see
14839 @return Result of the function call
14840*/
14841WDI_Status
14842WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014843(
Jeff Johnson295189b2012-06-20 16:38:30 -070014844 WDI_ControlBlockType* pWDICtx,
14845 WDI_EventInfoType* pEventData
14846)
14847{
14848 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14849 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014850 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 wpt_uint16 usDataOffset = 0;
14852 wpt_uint16 usSendSize = 0;
14853 tUapsdInfo uapsdAcParamsReq;
14854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14855
14856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 -------------------------------------------------------------------------*/
14859 if (( NULL == pEventData ) ||
14860 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14861 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14862 {
14863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 }
14868
14869 /*-----------------------------------------------------------------------
14870 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014873 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 sizeof(uapsdAcParamsReq),
14875 &pSendBuffer, &usDataOffset, &usSendSize))||
14876 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14877 {
14878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014879 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 }
14884
14885 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14886 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14887 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14888 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14889 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14890 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14891
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 wpalMemoryCopy( pSendBuffer+usDataOffset,
14893 &uapsdAcParamsReq,
14894 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014895
14896 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014898
14899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14903 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014904}/*WDI_ProcessSetUapsdAcParamsReq*/
14905
14906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014909
14910 @param pWDICtx: pointer to the WLAN DAL context
14911 pEventData: pointer to the event information structure
14912
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 @see
14914 @return Result of the function call
14915*/
14916WDI_Status
14917WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014918(
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 WDI_ControlBlockType* pWDICtx,
14920 WDI_EventInfoType* pEventData
14921)
14922{
14923 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14924 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 wpt_uint16 usDataOffset = 0;
14927 wpt_uint16 usSendSize = 0;
14928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14929
14930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014932 -------------------------------------------------------------------------*/
14933 if (( NULL == pEventData ) ||
14934 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14935 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14936 {
14937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 }
14942
14943 /*-----------------------------------------------------------------------
14944 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14949 &pSendBuffer, &usDataOffset, &usSendSize))||
14950 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14951 {
14952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014953 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 }
14958
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 wpalMemoryCopy( pSendBuffer+usDataOffset,
14960 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14961 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014962
14963 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014965
14966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14970 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014971}/*WDI_ProcessUpdateUapsdParamsReq*/
14972
14973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014976
14977 @param pWDICtx: pointer to the WLAN DAL context
14978 pEventData: pointer to the event information structure
14979
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 @see
14981 @return Result of the function call
14982*/
14983WDI_Status
14984WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014985(
Jeff Johnson295189b2012-06-20 16:38:30 -070014986 WDI_ControlBlockType* pWDICtx,
14987 WDI_EventInfoType* pEventData
14988)
14989{
14990 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14991 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 wpt_uint16 usDataOffset = 0;
14994 wpt_uint16 usSendSize = 0;
14995 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14996
14997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14998
14999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 -------------------------------------------------------------------------*/
15002 if (( NULL == pEventData ) ||
15003 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
15004 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
15005 {
15006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015010 }
15011
15012 /*-----------------------------------------------------------------------
15013 Get message buffer
15014 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 sizeof(halRxpFilterParams),
15017 &pSendBuffer, &usDataOffset, &usSendSize))||
15018 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
15019 {
15020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015021 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
15023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 }
15026
Jeff Johnsone7245742012-09-05 17:12:55 -070015027 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070015028 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070015029 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070015030 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
15031
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 wpalMemoryCopy( pSendBuffer+usDataOffset,
15033 &halRxpFilterParams,
15034 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015035
15036 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015037 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015038
15039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015040 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15043 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015044}/*WDI_ProcessConfigureRxpFilterReq*/
15045
15046/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015047 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015049
15050 @param pWDICtx: pointer to the WLAN DAL context
15051 pEventData: pointer to the event information structure
15052
Jeff Johnson295189b2012-06-20 16:38:30 -070015053 @see
15054 @return Result of the function call
15055*/
15056WDI_Status
15057WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015058(
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 WDI_ControlBlockType* pWDICtx,
15060 WDI_EventInfoType* pEventData
15061)
15062{
15063 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15064 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015065 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 wpt_uint16 usDataOffset = 0;
15067 wpt_uint16 usSendSize = 0;
15068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15069
15070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 -------------------------------------------------------------------------*/
15073 if (( NULL == pEventData ) ||
15074 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15075 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15076 {
15077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 }
15082
15083 /*-----------------------------------------------------------------------
15084 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015087 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15089 &pSendBuffer, &usDataOffset, &usSendSize))||
15090 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15091 {
15092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015093 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 }
15098
Jeff Johnsone7245742012-09-05 17:12:55 -070015099 wpalMemoryCopy( pSendBuffer+usDataOffset,
15100 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15101 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15102 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15103 &pwdiBeaconFilterParams->aFilters[0],
15104 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015105
15106 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015108
15109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015110 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015111 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015112 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15113 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015114}/*WDI_ProcessSetBeaconFilterReq*/
15115
15116/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015117 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015118 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015119
15120 @param pWDICtx: pointer to the WLAN DAL context
15121 pEventData: pointer to the event information structure
15122
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 @see
15124 @return Result of the function call
15125*/
15126WDI_Status
15127WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015128(
Jeff Johnson295189b2012-06-20 16:38:30 -070015129 WDI_ControlBlockType* pWDICtx,
15130 WDI_EventInfoType* pEventData
15131)
15132{
15133 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15134 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 wpt_uint16 usDataOffset = 0;
15137 wpt_uint16 usSendSize = 0;
15138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15139
15140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015142 -------------------------------------------------------------------------*/
15143 if (( NULL == pEventData ) ||
15144 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15145 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15146 {
15147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015148 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 }
15152
15153 /*-----------------------------------------------------------------------
15154 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015157 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015158 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15159 &pSendBuffer, &usDataOffset, &usSendSize))||
15160 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15161 {
15162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015163 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 }
15168
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 wpalMemoryCopy( pSendBuffer+usDataOffset,
15170 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15171 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015172
15173 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015174 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015175
15176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015177 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15180 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015181}
15182
15183/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015184 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015186
15187 @param pWDICtx: pointer to the WLAN DAL context
15188 pEventData: pointer to the event information structure
15189
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 @see
15191 @return Result of the function call
15192*/
15193WDI_Status
15194WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015195(
Jeff Johnson295189b2012-06-20 16:38:30 -070015196 WDI_ControlBlockType* pWDICtx,
15197 WDI_EventInfoType* pEventData
15198)
15199{
15200 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15201 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015202 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 wpt_uint16 usDataOffset = 0;
15204 wpt_uint16 usSendSize = 0;
15205 tHalRSSIThresholds rssiThresholdsReq;
15206 WDI_Status ret_status = 0;
15207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15208
15209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 -------------------------------------------------------------------------*/
15212 if (( NULL == pEventData ) ||
15213 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15214 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15215 {
15216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015217 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015220 }
15221
15222 /*-----------------------------------------------------------------------
15223 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015224 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015226 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 sizeof(rssiThresholdsReq),
15228 &pSendBuffer, &usDataOffset, &usSendSize))||
15229 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15230 {
15231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015232 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 }
15237
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015240 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015248 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015254 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015255 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15258
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 wpalMemoryCopy( pSendBuffer+usDataOffset,
15260 &rssiThresholdsReq,
15261 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015262
15263 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015265
15266 /*-------------------------------------------------------------------------
15267 Send Set threshold req to HAL
15268 -------------------------------------------------------------------------*/
15269 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15270 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15271 {
15272 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15273 // req. Then as a result of processing the threshold cross ind, we trigger
15274 // a Set threshold req, then we need to indicate to WDI that it needs to
15275 // go to busy state as a result of the indication as we sent a req in the
15276 // same WDI context.
15277 // Hence expected state transition is to busy.
15278 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15279 }
15280
15281 return ret_status;
15282}
15283
15284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015287
15288 @param pWDICtx: pointer to the WLAN DAL context
15289 pEventData: pointer to the event information structure
15290
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 @see
15292 @return Result of the function call
15293*/
15294WDI_Status
15295WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015296(
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 WDI_ControlBlockType* pWDICtx,
15298 WDI_EventInfoType* pEventData
15299)
15300{
15301 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15302 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 wpt_uint16 usDataOffset = 0;
15305 wpt_uint16 usSendSize = 0;
15306 tHalHostOffloadReq hostOffloadParams;
15307 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015308 wpt_uint8 ucCurrentBSSSesIdx = 0;
15309 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015310
15311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15312
15313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 -------------------------------------------------------------------------*/
15316 if (( NULL == pEventData ) ||
15317 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15318 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15319 {
15320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015322 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015323 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 }
15325
15326 /*-----------------------------------------------------------------------
15327 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015328 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015330 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15332 &pSendBuffer, &usDataOffset, &usSendSize))||
15333 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15334 {
15335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015336 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15338 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015339 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 }
15341
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015342 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15343 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15344 &pBSSSes);
15345 if ( NULL == pBSSSes )
15346 {
c_hpothu86feba52014-10-28 15:51:18 +053015347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015348 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15349 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015350 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015351 }
15352
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15354 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015355
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15357 {
15358 // ARP Offload
15359 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15360 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15361 4);
15362 }
15363 else
15364 {
15365 // NS Offload
15366 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15367 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15368 16);
15369
15370#ifdef WLAN_NS_OFFLOAD
15371 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15372 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15373 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15374 16);
15375 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15376 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15377 16);
15378 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15379 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15380 16);
15381 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15382 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15383 16);
15384 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15385 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15386 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015387 nsOffloadParams.srcIPv6AddrValid =
15388 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15389
15390 nsOffloadParams.targetIPv6Addr1Valid =
15391 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15392
15393 nsOffloadParams.targetIPv6Addr2Valid =
15394 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15395
15396 nsOffloadParams.slotIndex =
15397 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015398
Jeff Johnson295189b2012-06-20 16:38:30 -070015399#endif // WLAN_NS_OFFLOAD
15400 }
15401
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015402 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15403
Jeff Johnson295189b2012-06-20 16:38:30 -070015404 // copy hostOffloadParams into pSendBuffer
15405 wpalMemoryCopy( pSendBuffer+usDataOffset,
15406 &hostOffloadParams,
15407 sizeof(hostOffloadParams));
15408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015409 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015411 // copy nsOffloadParams into pSendBuffer
15412 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015413 &nsOffloadParams,
15414 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015415 }
15416 else
15417 {
15418#ifdef WLAN_NS_OFFLOAD
15419 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15420 {
15421 // copy nsOffloadParams into pSendBuffer
15422 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15423 &nsOffloadParams,
15424 sizeof(nsOffloadParams));
15425 }
15426#endif
15427 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015428
15429 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015430 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015431
15432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015433 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015434 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015435 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15436 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015437
15438fail:
15439 // Release the message buffer so we don't leak
15440 wpalMemoryFree(pSendBuffer);
15441
15442failRequest:
15443 //WDA should have failure check to avoid the memory leak
15444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015445}/*WDI_ProcessHostOffloadReq*/
15446
15447/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015448 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015449 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015450
15451 @param pWDICtx: pointer to the WLAN DAL context
15452 pEventData: pointer to the event information structure
15453
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 @see
15455 @return Result of the function call
15456*/
15457WDI_Status
15458WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015459(
Jeff Johnson295189b2012-06-20 16:38:30 -070015460 WDI_ControlBlockType* pWDICtx,
15461 WDI_EventInfoType* pEventData
15462)
15463{
15464 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15465 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015466 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015467 wpt_uint16 usDataOffset = 0;
15468 wpt_uint16 usSendSize = 0;
15469 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015470 wpt_uint8 ucCurrentBSSSesIdx = 0;
15471 WDI_BSSSessionType* pBSSSes = NULL;
15472
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15474
15475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 -------------------------------------------------------------------------*/
15478 if (( NULL == pEventData ) ||
15479 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15480 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15481 {
15482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15483 "Invalid parameters in Keep Alive req");
15484 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015485 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015486 }
15487
15488 /*-----------------------------------------------------------------------
15489 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015490 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015491 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015492 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015493 sizeof(keepAliveReq),
15494 &pSendBuffer, &usDataOffset, &usSendSize))||
15495 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15496 {
15497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015498 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015499 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15500 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015501 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 }
15503
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015504 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15505 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15506 &pBSSSes);
15507 if ( NULL == pBSSSes )
15508 {
15509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015510 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015511 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015512 }
15513
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15515 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15516
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015517 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015518
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15520 {
15521 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15522 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15523 HAL_IPV4_ADDR_LEN);
15524 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15525 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 wpalMemoryCopy(keepAliveReq.destMacAddr,
15528 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15529 HAL_MAC_ADDR_LEN);
15530 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015531
15532 wpalMemoryCopy( pSendBuffer+usDataOffset,
15533 &keepAliveReq,
15534 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015535
15536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015537 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015538
15539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015540 "Process keep alive req time period %d",
15541 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015542
15543 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015544 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015545
15546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15547 "Sending keep alive req to HAL");
15548
15549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15553 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015554
15555fail:
15556 // Release the message buffer so we don't leak
15557 wpalMemoryFree(pSendBuffer);
15558
15559failRequest:
15560 //WDA should have failure check to avoid the memory leak
15561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015562}/*WDI_ProcessKeepAliveReq*/
15563
15564
15565/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015568
15569 @param pWDICtx: pointer to the WLAN DAL context
15570 pEventData: pointer to the event information structure
15571
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 @see
15573 @return Result of the function call
15574*/
15575WDI_Status
15576WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015577(
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 WDI_ControlBlockType* pWDICtx,
15579 WDI_EventInfoType* pEventData
15580)
15581{
15582 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15583 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015584 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 wpt_uint16 usDataOffset = 0;
15586 wpt_uint16 usSendSize = 0;
15587 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015588 wpt_uint8 ucCurrentBSSSesIdx = 0;
15589 WDI_BSSSessionType* pBSSSes = NULL;
15590
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15592
15593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 -------------------------------------------------------------------------*/
15596 if (( NULL == pEventData ) ||
15597 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15598 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15599 {
15600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015602 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015603 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 }
15605
15606 /*-----------------------------------------------------------------------
15607 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015608 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015610 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015611 sizeof(wowlAddBcPtrnReq),
15612 &pSendBuffer, &usDataOffset, &usSendSize))||
15613 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15614 {
15615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015616 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15618 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015619 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015620 }
15621
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015622 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15623 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15624 &pBSSSes);
15625 if ( NULL == pBSSSes )
15626 {
15627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015628 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015629 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015630 }
15631
Jeff Johnsone7245742012-09-05 17:12:55 -070015632 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015634 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015638 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015639 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15640
15641 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15642 {
15643 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15644 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15645 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15646 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15647 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15648 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15649 }
15650 else
15651 {
15652 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15653 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15654 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15655 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15656 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15657 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15658
15659 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15660 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15661 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15662 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15663 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15664 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15665 }
15666
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015667 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15668
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 wpalMemoryCopy( pSendBuffer+usDataOffset,
15670 &wowlAddBcPtrnReq,
15671 sizeof(wowlAddBcPtrnReq));
15672
15673 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015675
15676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15680 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015681fail:
15682 // Release the message buffer so we don't leak
15683 wpalMemoryFree(pSendBuffer);
15684
15685failRequest:
15686 //WDA should have failure check to avoid the memory leak
15687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015688}/*WDI_ProcessWowlAddBcPtrnReq*/
15689
15690/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015693
15694 @param pWDICtx: pointer to the WLAN DAL context
15695 pEventData: pointer to the event information structure
15696
Jeff Johnson295189b2012-06-20 16:38:30 -070015697 @see
15698 @return Result of the function call
15699*/
15700WDI_Status
15701WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015702(
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 WDI_ControlBlockType* pWDICtx,
15704 WDI_EventInfoType* pEventData
15705)
15706{
15707 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15708 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 wpt_uint16 usDataOffset = 0;
15711 wpt_uint16 usSendSize = 0;
15712 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015713 wpt_uint8 ucCurrentBSSSesIdx = 0;
15714 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15716
15717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 -------------------------------------------------------------------------*/
15720 if (( NULL == pEventData ) ||
15721 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15722 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15723 {
15724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015726 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015727 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 }
15729
15730 /*-----------------------------------------------------------------------
15731 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015732 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 sizeof(wowlDelBcPtrnReq),
15736 &pSendBuffer, &usDataOffset, &usSendSize))||
15737 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15738 {
15739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015740 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15742 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015743 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 }
15745
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015746 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15747 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15748 &pBSSSes);
15749 if ( NULL == pBSSSes )
15750 {
15751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015752 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015753 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015754 }
15755
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015757 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015758
15759 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15760
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 wpalMemoryCopy( pSendBuffer+usDataOffset,
15762 &wowlDelBcPtrnReq,
15763 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015764
15765 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015766 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015767
15768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015769 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015771 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15772 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015773
15774fail:
15775 // Release the message buffer so we don't leak
15776 wpalMemoryFree(pSendBuffer);
15777
15778failRequest:
15779 //WDA should have failure check to avoid the memory leak
15780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015781}/*WDI_ProcessWowlDelBcPtrnReq*/
15782
15783/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015786
15787 @param pWDICtx: pointer to the WLAN DAL context
15788 pEventData: pointer to the event information structure
15789
Jeff Johnson295189b2012-06-20 16:38:30 -070015790 @see
15791 @return Result of the function call
15792*/
15793WDI_Status
15794WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015795(
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 WDI_ControlBlockType* pWDICtx,
15797 WDI_EventInfoType* pEventData
15798)
15799{
15800 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15801 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015802 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015803 wpt_uint16 usDataOffset = 0;
15804 wpt_uint16 usSendSize = 0;
15805 tHalWowlEnterParams wowlEnterReq;
15806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15807
15808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 -------------------------------------------------------------------------*/
15811 if (( NULL == pEventData ) ||
15812 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15813 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15814 {
15815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015819 }
15820
15821 /*-----------------------------------------------------------------------
15822 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 sizeof(wowlEnterReq),
15827 &pSendBuffer, &usDataOffset, &usSendSize))||
15828 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15829 {
15830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015831 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015835 }
15836
Kumar Anandaca924e2013-07-22 14:35:34 -070015837 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15838
Jeff Johnsone7245742012-09-05 17:12:55 -070015839 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015847 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015851 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015853 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15855
15856#ifdef WLAN_WAKEUP_EVENTS
15857 wowlEnterReq.ucWoWEAPIDRequestEnable =
15858 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15859
15860 wowlEnterReq.ucWoWEAPOL4WayEnable =
15861 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15862
15863 wowlEnterReq.ucWowNetScanOffloadMatch =
15864 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15865
15866 wowlEnterReq.ucWowGTKRekeyError =
15867 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15868
15869 wowlEnterReq.ucWoWBSSConnLoss =
15870 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15871#endif // WLAN_WAKEUP_EVENTS
15872
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015873 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15874
Jeff Johnson295189b2012-06-20 16:38:30 -070015875 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15876 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15877 sizeof(tSirMacAddr));
15878
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 wpalMemoryCopy( pSendBuffer+usDataOffset,
15880 &wowlEnterReq,
15881 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015882
15883 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015884 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015885
15886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015889 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15890 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015891}/*WDI_ProcessWowlEnterReq*/
15892
15893/**
15894 @brief Process Wowl exit Request function (called when Main FSM
15895 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015896
15897 @param pWDICtx: pointer to the WLAN DAL context
15898 pEventData: pointer to the event information structure
15899
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 @see
15901 @return Result of the function call
15902*/
15903WDI_Status
15904WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015905(
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 WDI_ControlBlockType* pWDICtx,
15907 WDI_EventInfoType* pEventData
15908)
15909{
15910 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015911 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015912 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 wpt_uint16 usDataOffset = 0;
15914 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015915 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15917
15918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 -------------------------------------------------------------------------*/
15921 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015922 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015923 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15924 {
15925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 }
15930
15931 /*-----------------------------------------------------------------------
15932 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015936 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015938 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 {
15940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015941 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015942 pEventData, wdiWowlExitCb);
15943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015945 }
15946
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015947 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15948
15949 wpalMemoryCopy( pSendBuffer+usDataOffset,
15950 &wowlExitparams,
15951 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15956 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015957}/*WDI_ProcessWowlExitReq*/
15958
15959/**
15960 @brief Process Configure Apps Cpu Wakeup State Request function
15961 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015962
15963 @param pWDICtx: pointer to the WLAN DAL context
15964 pEventData: pointer to the event information structure
15965
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 @see
15967 @return Result of the function call
15968*/
15969WDI_Status
15970WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015971(
Jeff Johnson295189b2012-06-20 16:38:30 -070015972 WDI_ControlBlockType* pWDICtx,
15973 WDI_EventInfoType* pEventData
15974)
15975{
15976 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15977 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 wpt_uint16 usDataOffset = 0;
15980 wpt_uint16 usSendSize = 0;
15981 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15983
15984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 -------------------------------------------------------------------------*/
15987 if (( NULL == pEventData ) ||
15988 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15989 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15990 {
15991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015995 }
15996
15997 /*-----------------------------------------------------------------------
15998 Get message buffer
15999 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016000 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016001 sizeof(halCfgAppsCpuWakeupStateReqParams),
16002 &pSendBuffer, &usDataOffset, &usSendSize))||
16003 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
16004 {
16005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016006 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
16008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 }
16011
Jeff Johnsone7245742012-09-05 17:12:55 -070016012 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070016013 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
16014
Jeff Johnsone7245742012-09-05 17:12:55 -070016015 wpalMemoryCopy( pSendBuffer+usDataOffset,
16016 &halCfgAppsCpuWakeupStateReqParams,
16017 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016018
16019 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016020 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016021
16022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016023 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016024 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016025 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16026 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
16027 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016028}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
16029
16030#ifdef WLAN_FEATURE_VOWIFI_11R
16031/**
16032 @brief Process Aggregated Add TSpec Request function (called when Main FSM
16033 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016034
16035 @param pWDICtx: pointer to the WLAN DAL context
16036 pEventData: pointer to the event information structure
16037
Jeff Johnson295189b2012-06-20 16:38:30 -070016038 @see
16039 @return Result of the function call
16040*/
16041WDI_Status
16042WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016043(
Jeff Johnson295189b2012-06-20 16:38:30 -070016044 WDI_ControlBlockType* pWDICtx,
16045 WDI_EventInfoType* pEventData
16046)
16047{
16048 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16049 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016052 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 wpt_uint16 usDataOffset = 0;
16054 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016055 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 wpt_macAddr macBSSID;
16057 tAggrAddTsReq halAggrAddTsReq;
16058 int i;
16059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16060
16061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016063 -------------------------------------------------------------------------*/
16064 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16065 ( NULL == pEventData->pCBfnc ))
16066 {
16067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016071 }
16072 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16073 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16074 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16075 /*-------------------------------------------------------------------------
16076 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016077 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 -------------------------------------------------------------------------*/
16079 wpalMutexAcquire(&pWDICtx->wptMutex);
16080
16081 /*------------------------------------------------------------------------
16082 Find the BSS for which the request is made and identify WDI session
16083 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16085 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016086 &macBSSID))
16087 {
16088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016089 "This station does not exist in the WDI Station Table %d",
16090 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 }
16094
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16096 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16099 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16100 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016101
16102 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016104 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016105
Jeff Johnson295189b2012-06-20 16:38:30 -070016106 /*------------------------------------------------------------------------
16107 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 ------------------------------------------------------------------------*/
16110 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16111 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16113 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16114 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016115
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016117 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016118 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016119 }
16120
16121 wpalMutexRelease(&pWDICtx->wptMutex);
16122 /*-----------------------------------------------------------------------
16123 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 sizeof(tAggrAddTsParams),
16128 &pSendBuffer, &usDataOffset, &usSendSize))||
16129 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16130 {
16131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016132 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 }
16137
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16142
16143 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16144 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016145 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016146 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16151 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16154 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16157 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16160 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16163 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16166 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16169 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16172 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016173 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016177
16178
16179 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016184 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016186 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016189 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016190 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016199 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016201 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16209 }
16210
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 wpalMemoryCopy( pSendBuffer+usDataOffset,
16212 &halAggrAddTsReq,
16213 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016214
16215 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016216 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016217
16218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016219 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016223 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016224}/*WDI_ProcessAggrAddTSpecReq*/
16225#endif /* WLAN_FEATURE_VOWIFI_11R */
16226
16227/**
16228 @brief Process Shutdown Request function (called when Main FSM
16229 allows it)
16230
16231 @param pWDICtx: pointer to the WLAN DAL context
16232 pEventData: pointer to the event information structure
16233
16234 @see
16235 @return Result of the function call
16236*/
16237WDI_Status
16238WDI_ProcessShutdownReq
16239(
16240 WDI_ControlBlockType* pWDICtx,
16241 WDI_EventInfoType* pEventData
16242 )
16243{
16244 wpt_status wptStatus;
16245
16246
16247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16248
16249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 -------------------------------------------------------------------------*/
16252 if ( NULL == pEventData )
16253 {
16254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016256 WDI_ASSERT(0);
16257 return WDI_STATUS_E_FAILURE;
16258 }
16259
16260 wpalMutexAcquire(&pWDICtx->wptMutex);
16261
16262
16263 gWDIInitialized = eWLAN_PAL_FALSE;
16264 /*! TO DO: stop the data services */
16265 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16266 {
16267 /*Stop the STA Table !UT- check this logic again
16268 It is safer to do it here than on the response - because a stop is imminent*/
16269 WDI_STATableStop(pWDICtx);
16270
16271 /* Stop Transport Driver, DXE */
16272 WDTS_Stop(pWDICtx);
16273 }
16274
16275 /*Clear all pending request*/
16276 WDI_ClearPendingRequests(pWDICtx);
16277 /* Close Data transport*/
16278 /* FTM mode does not open Data Path */
16279 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16280 {
16281 WDTS_Close(pWDICtx);
16282 }
16283 /*Close the STA Table !UT- check this logic again*/
16284 WDI_STATableClose(pWDICtx);
16285 /*close the PAL */
16286 wptStatus = wpalClose(pWDICtx->pPALContext);
16287 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16288 {
16289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16290 "Failed to wpal Close %d", wptStatus);
16291 WDI_ASSERT(0);
16292 }
16293
16294 /*Transition back to init state*/
16295 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16296
16297 wpalMutexRelease(&pWDICtx->wptMutex);
16298
16299 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016300 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016301
16302
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016304}/*WDI_ProcessShutdownReq*/
16305
16306/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016308========================================================================*/
16309
16310/**
16311 @brief Process Start Response function (called when a response
16312 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016313
16314 @param pWDICtx: pointer to the WLAN DAL context
16315 pEventData: pointer to the event information structure
16316
Jeff Johnson295189b2012-06-20 16:38:30 -070016317 @see
16318 @return Result of the function call
16319*/
16320WDI_Status
16321WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016322(
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 WDI_ControlBlockType* pWDICtx,
16324 WDI_EventInfoType* pEventData
16325)
16326{
16327 WDI_StartRspParamsType wdiRspParams;
16328 WDI_StartRspCb wdiStartRspCb = NULL;
16329
16330 tHalMacStartRspParams* startRspParams;
16331
16332#ifndef HAL_SELF_STA_PER_BSS
16333 WDI_AddStaParams wdiAddSTAParam = {0};
16334#endif
16335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16336
Jeff Johnsone7245742012-09-05 17:12:55 -070016337 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016340 -------------------------------------------------------------------------*/
16341 if (( NULL == pEventData ) ||
16342 ( NULL == pEventData->pEventData) ||
16343 ( NULL == wdiStartRspCb ))
16344 {
16345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 }
16350
16351 /*-------------------------------------------------------------------------
16352 Extract response and send it to UMAC
16353 -------------------------------------------------------------------------*/
16354 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16355 {
16356 // not enough data was received
16357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016358 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 }
16363
16364 /*-------------------------------------------------------------------------
16365 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016366 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016367 -------------------------------------------------------------------------*/
16368 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16369
16370 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16371 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16372 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16373 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16374 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16375 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16376 wdiRspParams.wlanReportedVersion.major =
16377 startRspParams->wcnssWlanVersion.major;
16378 wdiRspParams.wlanReportedVersion.minor =
16379 startRspParams->wcnssWlanVersion.minor;
16380 wdiRspParams.wlanReportedVersion.version =
16381 startRspParams->wcnssWlanVersion.version;
16382 wdiRspParams.wlanReportedVersion.revision =
16383 startRspParams->wcnssWlanVersion.revision;
16384 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16385 startRspParams->wcnssCrmVersionString,
16386 sizeof(wdiRspParams.wcnssSoftwareVersion));
16387 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16388 startRspParams->wcnssWlanVersionString,
16389 sizeof(wdiRspParams.wcnssHardwareVersion));
16390 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16391
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016392 /*Save the HAL Version*/
16393 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16394
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 wpalMutexAcquire(&pWDICtx->wptMutex);
16396 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16397 {
16398 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16399
16400 /*Cache the start response for further use*/
16401 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016402 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 sizeof(pWDICtx->wdiCachedStartRspParams));
16404
16405 }
16406 else
16407 {
16408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16409 "Failed to start device with status %s(%d)",
16410 WDI_getHALStatusMsgString(startRspParams->status),
16411 startRspParams->status);
16412
16413 /*Set the expected state transition to stopped - because the start has
16414 failed*/
16415 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16416
16417 wpalMutexRelease(&pWDICtx->wptMutex);
16418
16419 /*Notify UMAC*/
16420 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016421
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016423 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016424
16425 /*Although the response is an error - it was processed by our function
16426 so as far as the caller is concerned this is a succesful reponse processing*/
16427 return WDI_STATUS_SUCCESS;
16428 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016429
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 wpalMutexRelease(&pWDICtx->wptMutex);
16431
16432 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16433 {
16434 /* FTM mode does not need to execute below */
16435 /* Notify UMAC */
16436 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16437 return WDI_STATUS_SUCCESS;
16438 }
16439
16440 /* START the Data transport */
16441 WDTS_startTransport(pWDICtx);
16442
16443 /*Start the STA Table !- check this logic again*/
16444 WDI_STATableStart(pWDICtx);
16445
16446#ifndef HAL_SELF_STA_PER_BSS
16447 /* Store the Self STA Index */
16448 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16449
16450 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16451 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16452 WDI_MAC_ADDR_LEN);
16453
16454 /* At this point add the self-STA */
16455
16456 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16457 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16458 /*! TO DO: wdiAddSTAParam.dpuSig */
16459 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16460 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16461 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16462
16463 //all DPU indices are the same for self STA
16464 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16465 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016466 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016467 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16468 WDI_MAC_ADDR_LEN);
16469 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16470 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16471
16472 /* Note: Since we don't get an explicit config STA request for self STA, we
16473 add the self STA upon receiving the Start response message. But the
16474 self STA entry in the table is deleted when WDI gets an explicit delete STA
16475 request */
16476 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16477#endif
16478
16479 /*Notify UMAC*/
16480 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16481
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016483}/*WDI_ProcessStartRsp*/
16484
16485
16486/**
16487 @brief Process Stop Response function (called when a response
16488 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016489
16490 @param pWDICtx: pointer to the WLAN DAL context
16491 pEventData: pointer to the event information structure
16492
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 @see
16494 @return Result of the function call
16495*/
16496WDI_Status
16497WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016498(
Jeff Johnson295189b2012-06-20 16:38:30 -070016499 WDI_ControlBlockType* pWDICtx,
16500 WDI_EventInfoType* pEventData
16501)
16502{
16503 WDI_Status wdiStatus;
16504 WDI_StopRspCb wdiStopRspCb = NULL;
16505
Jeff Johnsone7245742012-09-05 17:12:55 -070016506 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16508
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016512 -------------------------------------------------------------------------*/
16513 if (( NULL == pEventData ) ||
16514 ( NULL == pEventData->pEventData) ||
16515 ( NULL == wdiStopRspCb ))
16516 {
16517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 }
16522
16523 /*-------------------------------------------------------------------------
16524 Extract response and send it to UMAC
16525 -------------------------------------------------------------------------*/
16526 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16527 {
16528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016529 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 pEventData->uEventDataSize);
16531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016533 }
16534
16535 /*-------------------------------------------------------------------------
16536 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016537 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016539 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16540 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016541 sizeof(halMacStopRspMsg.stopRspParams));
16542
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016544
16545 wpalMutexAcquire(&pWDICtx->wptMutex);
16546
16547 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 --------------------------------------------------------------------------*/
16550 if ( WDI_STATUS_SUCCESS != wdiStatus )
16551 {
16552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16553 "Failed to stop the device with status %s (%d)",
16554 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16555 halMacStopRspMsg.stopRspParams.status);
16556
Jeff Johnsone7245742012-09-05 17:12:55 -070016557 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016558 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016559
Jeff Johnson295189b2012-06-20 16:38:30 -070016560 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016563
Jeff Johnson295189b2012-06-20 16:38:30 -070016564 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16565
16566 /*Transition now as WDI may get preempted imediately after it sends
16567 up the Stop Response and it will not get to process the state transition
16568 from Main Rsp function*/
16569 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16570 wpalMutexRelease(&pWDICtx->wptMutex);
16571
16572 /*! TO DO: - STOP the Data transport */
16573
16574 /*Notify UMAC*/
16575 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16576
Jeff Johnsone7245742012-09-05 17:12:55 -070016577 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016578}/*WDI_ProcessStopRsp*/
16579
16580/**
16581 @brief Process Close Rsp function (called when a response
16582 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016583
16584 @param pWDICtx: pointer to the WLAN DAL context
16585 pEventData: pointer to the event information structure
16586
Jeff Johnson295189b2012-06-20 16:38:30 -070016587 @see
16588 @return Result of the function call
16589*/
16590WDI_Status
16591WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016592(
Jeff Johnson295189b2012-06-20 16:38:30 -070016593 WDI_ControlBlockType* pWDICtx,
16594 WDI_EventInfoType* pEventData
16595)
16596{
16597 /*There is no close response comming from HAL - function just kept for
16598 simmetry */
16599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016600 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016601}/*WDI_ProcessCloseRsp*/
16602
16603
16604/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016605 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016606============================================================================*/
16607
16608/**
16609 @brief Process Init Scan Rsp function (called when a response
16610 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016611
16612 @param pWDICtx: pointer to the WLAN DAL context
16613 pEventData: pointer to the event information structure
16614
Jeff Johnson295189b2012-06-20 16:38:30 -070016615 @see
16616 @return Result of the function call
16617*/
16618WDI_Status
16619WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016620(
Jeff Johnson295189b2012-06-20 16:38:30 -070016621 WDI_ControlBlockType* pWDICtx,
16622 WDI_EventInfoType* pEventData
16623)
16624{
16625 WDI_Status wdiStatus;
16626 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016628 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16630
16631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016632 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016633 -------------------------------------------------------------------------*/
16634 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16635 ( NULL == pEventData->pEventData))
16636 {
16637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 }
16642
16643 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16644 if( NULL == wdiInitScanRspCb)
16645 {
16646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016647 "%s: call back function is NULL", __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 /*-------------------------------------------------------------------------
16653 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016654 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016656 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16657 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016658 sizeof(halInitScanRspMsg.initScanRspParams));
16659
Jeff Johnsone7245742012-09-05 17:12:55 -070016660 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016661
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016662 if (pWDICtx->bInBmps && (WDI_STATUS_SUCCESS == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 {
16664 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016665 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16666 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016668 "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 -080016669 WDI_ASSERT(0);
16670 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 }
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016672 else
16673 {
16674 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16675 "Error returned WDI_ProcessInitScanRspi:%d BMPS%d",
16676 wdiStatus, pWDICtx->bInBmps);
16677 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016678
16679 /*Notify UMAC*/
16680 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16681
Jeff Johnsone7245742012-09-05 17:12:55 -070016682 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016683}/*WDI_ProcessInitScanRsp*/
16684
16685
16686/**
16687 @brief Process Start Scan Rsp function (called when a response
16688 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016689
16690 @param pWDICtx: pointer to the WLAN DAL context
16691 pEventData: pointer to the event information structure
16692
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 @see
16694 @return Result of the function call
16695*/
16696WDI_Status
16697WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016698(
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 WDI_ControlBlockType* pWDICtx,
16700 WDI_EventInfoType* pEventData
16701)
16702{
16703 WDI_StartScanRspParamsType wdiStartScanParams;
16704 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016705
16706 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16708
16709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 -------------------------------------------------------------------------*/
16712 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16713 ( NULL == pEventData->pEventData))
16714 {
16715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016716 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 }
16720
16721 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16722 if( NULL == wdiStartScanRspCb)
16723 {
16724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016725 "%s: call back function is NULL", __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 /*-------------------------------------------------------------------------
16731 Extract response and send it to UMAC
16732 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016733 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16734 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 sizeof(halStartScanRspMsg.startScanRspParams));
16736
16737 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16738 halStartScanRspMsg.startScanRspParams.status);
16739#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016740 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016741 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016743 halStartScanRspMsg.startScanRspParams.startTSF,
16744 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016745#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016746
16747 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16748 {
16749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16750 "Start scan failed with status %s (%d)",
16751 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16752 halStartScanRspMsg.startScanRspParams.status);
16753 /* send the status to UMAC, don't return from here*/
16754 }
16755
16756 /*Notify UMAC*/
16757 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16758
Jeff Johnsone7245742012-09-05 17:12:55 -070016759 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016760
16761}/*WDI_ProcessStartScanRsp*/
16762
16763
16764/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016765 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016767
16768 @param pWDICtx: pointer to the WLAN DAL context
16769 pEventData: pointer to the event information structure
16770
Jeff Johnson295189b2012-06-20 16:38:30 -070016771 @see
16772 @return Result of the function call
16773*/
16774WDI_Status
16775WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016776(
Jeff Johnson295189b2012-06-20 16:38:30 -070016777 WDI_ControlBlockType* pWDICtx,
16778 WDI_EventInfoType* pEventData
16779)
16780{
16781 WDI_Status wdiStatus;
16782 tHalEndScanRspMsg halEndScanRspMsg;
16783 WDI_EndScanRspCb wdiEndScanRspCb;
16784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16785
16786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016788 -------------------------------------------------------------------------*/
16789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16790 ( NULL == pEventData->pEventData))
16791 {
16792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016796 }
16797
16798 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16799
16800 /*-------------------------------------------------------------------------
16801 Extract response and send it to UMAC
16802 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016803 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16804 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 sizeof(halEndScanRspMsg.endScanRspParams));
16806
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016808
16809 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16810 {
16811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16812 "End Scan failed with status %s (%d )",
16813 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16814 halEndScanRspMsg.endScanRspParams.status);
16815 /* send the status to UMAC, don't return from here*/
16816 }
16817
16818 /*Notify UMAC*/
16819 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16820
Jeff Johnsone7245742012-09-05 17:12:55 -070016821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016822}/*WDI_ProcessEndScanRsp*/
16823
16824
16825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016828
16829 @param pWDICtx: pointer to the WLAN DAL context
16830 pEventData: pointer to the event information structure
16831
Jeff Johnson295189b2012-06-20 16:38:30 -070016832 @see
16833 @return Result of the function call
16834*/
16835WDI_Status
16836WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016837(
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 WDI_ControlBlockType* pWDICtx,
16839 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016840)
Jeff Johnson295189b2012-06-20 16:38:30 -070016841{
16842 WDI_Status wdiStatus;
16843 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016844
16845 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16847
16848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 -------------------------------------------------------------------------*/
16851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16852 ( NULL == pEventData->pEventData))
16853 {
16854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 }
16859
16860 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16861
16862 /*-------------------------------------------------------------------------
16863 Extract response and send it to UMAC
16864 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16866 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16868
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016870
16871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 halFinishScanRspMsg.finishScanRspParams.status);
16874
16875 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16876 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16877 {
16878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16879 "Finish Scan failed with status %s (%d)",
16880 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16881 halFinishScanRspMsg.finishScanRspParams.status);
16882 /* send the status to UMAC, don't return from here*/
16883 }
16884
16885 /*Notify UMAC*/
16886 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16887
Jeff Johnsone7245742012-09-05 17:12:55 -070016888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016889}/*WDI_ProcessFinishScanRsp*/
16890
16891/**
16892 @brief Process Join Response function (called when a response
16893 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016894
16895 @param pWDICtx: pointer to the WLAN DAL context
16896 pEventData: pointer to the event information structure
16897
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 @see
16899 @return Result of the function call
16900*/
16901WDI_Status
16902WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016903(
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 WDI_ControlBlockType* pWDICtx,
16905 WDI_EventInfoType* pEventData
16906)
16907{
16908 WDI_Status wdiStatus;
16909 WDI_JoinRspCb wdiJoinRspCb;
16910 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016911
16912 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16914
16915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 -------------------------------------------------------------------------*/
16918 if (( NULL == pWDICtx ) ||
16919 ( NULL == pWDICtx->pfncRspCB ) ||
16920 ( NULL == pEventData ) ||
16921 ( NULL == pEventData->pEventData))
16922 {
16923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 }
16928
16929 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16930
16931 /*-------------------------------------------------------------------------
16932 Extract response and send it to UMAC
16933 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016934 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16935 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016936 sizeof(halJoinRspMsg.joinRspParams));
16937
Jeff Johnsone7245742012-09-05 17:12:55 -070016938 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016939
16940 wpalMutexAcquire(&pWDICtx->wptMutex);
16941
16942 /*-----------------------------------------------------------------------
16943 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016946 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016947 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16948 {
16949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016950 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16951 "association no longer in progress %d - mysterious HAL response",
16952 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016953
Jeff Johnsone7245742012-09-05 17:12:55 -070016954 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016955 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016956 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 }
16958
16959 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16960
16961 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 -----------------------------------------------------------------------*/
16964 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16965 {
16966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16967 "Join only allowed in Joining state - failure state is %d "
16968 "strange HAL response", pBSSSes->wdiAssocState);
16969
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16971
Jeff Johnson295189b2012-06-20 16:38:30 -070016972 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 }
16975
16976
16977 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016978 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 -----------------------------------------------------------------------*/
16980 if ( WDI_STATUS_SUCCESS != wdiStatus )
16981 {
16982 /*Association was failed by HAL - remove session*/
16983 WDI_DeleteSession(pWDICtx, pBSSSes);
16984
16985 /*Association no longer in progress */
16986 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16987
16988 /*Association no longer in progress - prepare pending assoc for processing*/
16989 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016990
Jeff Johnson295189b2012-06-20 16:38:30 -070016991 }
16992 else
16993 {
16994 /*Transition to state Joining - this may be redundant as we are supposed
16995 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016996 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016997 }
16998
16999 wpalMutexRelease(&pWDICtx->wptMutex);
17000
17001 /*Notify UMAC*/
17002 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17003
Jeff Johnsone7245742012-09-05 17:12:55 -070017004 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017005}/*WDI_ProcessJoinRsp*/
17006
17007
17008/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017009 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017010 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017011
17012 @param pWDICtx: pointer to the WLAN DAL context
17013 pEventData: pointer to the event information structure
17014
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 @see
17016 @return Result of the function call
17017*/
17018WDI_Status
17019WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017020(
Jeff Johnson295189b2012-06-20 16:38:30 -070017021 WDI_ControlBlockType* pWDICtx,
17022 WDI_EventInfoType* pEventData
17023)
17024{
17025 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
17026 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017027 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 WDI_BSSSessionType* pBSSSes = NULL;
17029
Jeff Johnsone7245742012-09-05 17:12:55 -070017030 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 WDI_AddStaParams wdiBcastAddSTAParam = {0};
17032 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070017033
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17035
17036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 -------------------------------------------------------------------------*/
17039 if (( NULL == pEventData ) ||
17040 ( NULL == pEventData->pEventData))
17041 {
17042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017043 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 }
17047
17048 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17049
17050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017053 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17054 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017055 sizeof(halConfigBssRspMsg.configBssRspParams));
17056
17057 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17058 halConfigBssRspMsg.configBssRspParams.status);
17059 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17060 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017061 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017062 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17063 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017064
Jeff Johnson295189b2012-06-20 16:38:30 -070017065 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017066
17067 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017068 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017069
17070 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017071 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017072
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017074
Jeff Johnson295189b2012-06-20 16:38:30 -070017075 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017076 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17078 #endif
17079 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17080 halConfigBssRspMsg.configBssRspParams.staMac,
17081 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017082
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 wpalMutexAcquire(&pWDICtx->wptMutex);
17084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017085 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017086 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017087 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17088 wdiConfigBSSParams.macBSSID,
17089 &pBSSSes);
17090
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 /*-----------------------------------------------------------------------
17092 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017093 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017094 -----------------------------------------------------------------------*/
17095 if ( NULL == pBSSSes )
17096 {
17097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17098 "Association sequence for this BSS does not yet exist "
17099 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017100
17101 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17102
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017104 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017105 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017106
Jeff Johnson295189b2012-06-20 16:38:30 -070017107 /*Save data for this BSS*/
17108 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17109 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017110 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017111 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017112 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017113 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017114 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017118 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017119 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17120 pBSSSes->bcastStaIdx =
17121 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017122
Jeff Johnson295189b2012-06-20 16:38:30 -070017123 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017124
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 /*-------------------------------------------------------------------------
17126 Add Peer STA
17127 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017128 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017129 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17130 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017131
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017133 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017134 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017135 wdiAddSTAParam.ucHTCapable =
17136 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17137 wdiAddSTAParam.ucStaType =
17138 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17139
Jeff Johnson295189b2012-06-20 16:38:30 -070017140 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017141 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17142 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017143 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017144
17145 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17146 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17147 WDI_MAC_ADDR_LEN);
17148
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017150 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017156 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017157 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017158 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017159 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017160 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017161 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017162
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17164 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017165
Jeff Johnson295189b2012-06-20 16:38:30 -070017166 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17167 /*-------------------------------------------------------------------------
17168 Add Broadcast STA only in AP mode
17169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017170 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017171 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 {
17173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17174 "Add BCAST STA to table for index: %d",
17175 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017176
17177 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017179
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17181 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17182 }
17183 wpalMutexRelease(&pWDICtx->wptMutex);
17184 }
17185 else
17186 {
17187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17188 "Config BSS RSP failed with status : %s(%d)",
17189 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017190 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017191 halConfigBssRspMsg.configBssRspParams.status);
17192
Jeff Johnsone7245742012-09-05 17:12:55 -070017193
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 /*Association was failed by HAL - remove session*/
17195 WDI_DeleteSession(pWDICtx, pBSSSes);
17196
17197 /*Association no longer in progress */
17198 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17199
17200 /*Association no longer in progress - prepare pending assoc for processing*/
17201 WDI_DequeueAssocRequest(pWDICtx);
17202
17203 }
17204
17205 /*Notify UMAC*/
17206 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17207
Jeff Johnsone7245742012-09-05 17:12:55 -070017208 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017209}/*WDI_ProcessConfigBSSRsp*/
17210
17211
17212/**
17213 @brief Process Del BSS Response function (called when a response
17214 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017215
17216 @param pWDICtx: pointer to the WLAN DAL context
17217 pEventData: pointer to the event information structure
17218
Jeff Johnson295189b2012-06-20 16:38:30 -070017219 @see
17220 @return Result of the function call
17221*/
17222WDI_Status
17223WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017224(
Jeff Johnson295189b2012-06-20 16:38:30 -070017225 WDI_ControlBlockType* pWDICtx,
17226 WDI_EventInfoType* pEventData
17227)
17228{
17229 WDI_DelBSSRspParamsType wdiDelBSSParams;
17230 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017231 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 WDI_BSSSessionType* pBSSSes = NULL;
17233
Jeff Johnsone7245742012-09-05 17:12:55 -070017234 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17236
17237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017239 -------------------------------------------------------------------------*/
17240 if (( NULL == pEventData ) ||
17241 ( NULL == pEventData->pEventData))
17242 {
17243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017244 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017247 }
17248
17249 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17250
17251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017252 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17255 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 sizeof(halDelBssRspMsg.deleteBssRspParams));
17257
17258
17259 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017260 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017261
17262 wpalMutexAcquire(&pWDICtx->wptMutex);
17263
17264 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017265 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017266 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017267 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17268 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17269 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017270
17271 /*-----------------------------------------------------------------------
17272 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017274 -----------------------------------------------------------------------*/
17275 if ( NULL == pBSSSes )
17276 {
17277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17278 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017279 "association no longer in progress - mysterious HAL response");
17280
17281 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17282
17283 wpalMutexRelease(&pWDICtx->wptMutex);
17284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017285 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017286
17287 /*Extract BSSID for the response to UMAC*/
17288 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17289 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17290
17291 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17292
17293 /*-----------------------------------------------------------------------
17294 The current session will be deleted
17295 -----------------------------------------------------------------------*/
17296 WDI_DeleteSession(pWDICtx, pBSSSes);
17297
17298
17299 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017300 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17301 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017302 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017303 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017304 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017305
17306 /* Delete the STA's in this BSS */
17307 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17308
Jeff Johnson295189b2012-06-20 16:38:30 -070017309 wpalMutexRelease(&pWDICtx->wptMutex);
17310
17311 /*Notify UMAC*/
17312 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17313
Jeff Johnsone7245742012-09-05 17:12:55 -070017314 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017315}/*WDI_ProcessDelBSSRsp*/
17316
17317/**
17318 @brief Process Post Assoc Rsp function (called when a response
17319 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017320
17321 @param pWDICtx: pointer to the WLAN DAL context
17322 pEventData: pointer to the event information structure
17323
Jeff Johnson295189b2012-06-20 16:38:30 -070017324 @see
17325 @return Result of the function call
17326*/
17327WDI_Status
17328WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017329(
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 WDI_ControlBlockType* pWDICtx,
17331 WDI_EventInfoType* pEventData
17332)
17333{
17334 WDI_PostAssocRspParamsType wdiPostAssocParams;
17335 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017336 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017337 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017338 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17340
17341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017342 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017343 -------------------------------------------------------------------------*/
17344 if (( NULL == pEventData ) ||
17345 ( NULL == pEventData->pEventData))
17346 {
17347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 }
17352
17353 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17354
17355 /*-------------------------------------------------------------------------
17356 Extract response and send it to UMAC
17357 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017358 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17359 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 sizeof(halPostAssocRspMsg.postAssocRspParams));
17361
17362 /*Extract the Post Assoc STA Params */
17363
Jeff Johnsone7245742012-09-05 17:12:55 -070017364 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017365 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017366 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017367 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017368 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017369 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17370
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 wdiPostAssocParams.wdiStatus =
17372 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017373
17374 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17375 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017376 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17377 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 WDI_MAC_ADDR_LEN);
17379
17380 /* Extract Post Assoc BSS Params */
17381
Jeff Johnsone7245742012-09-05 17:12:55 -070017382 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17383 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17384 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017385
17386 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17387 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17390 .macSTA, WDI_MAC_ADDR_LEN);
17391
Jeff Johnsone7245742012-09-05 17:12:55 -070017392 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17394
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017396 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17397
17398 wdiPostAssocParams.bssParams.ucBSSIdx =
17399 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17400
Jeff Johnsone7245742012-09-05 17:12:55 -070017401 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017402 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17403
17404 wpalMutexAcquire(&pWDICtx->wptMutex);
17405
17406 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017407 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017408 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017409 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017411 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017412
17413 /*-----------------------------------------------------------------------
17414 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 -----------------------------------------------------------------------*/
17417 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017418 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17420 {
17421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17422 "Association sequence for this BSS does not yet exist or "
17423 "association no longer in progress - mysterious HAL response");
17424
Jeff Johnsone7245742012-09-05 17:12:55 -070017425 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17426
Jeff Johnson295189b2012-06-20 16:38:30 -070017427 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 }
17430
17431 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017432 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017433 -----------------------------------------------------------------------*/
17434 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17435 {
17436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17437 "Post Assoc not allowed before JOIN - failing request "
17438 "strange HAL response");
17439
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17441
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 }
17445
17446 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017447 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017448 -----------------------------------------------------------------------*/
17449 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17450 {
17451 /*Association was failed by HAL - remove session*/
17452 WDI_DeleteSession(pWDICtx, pBSSSes);
17453 }
17454 else
17455 {
17456 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017457 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017458
17459 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017460 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017461 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017463 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017465 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017467 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17468
Jeff Johnsone7245742012-09-05 17:12:55 -070017469 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17471 }
17472
17473 /*Association no longer in progress */
17474 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17475
17476 /*Association no longer in progress - prepare pending assoc for processing*/
17477 WDI_DequeueAssocRequest(pWDICtx);
17478
17479 wpalMutexRelease(&pWDICtx->wptMutex);
17480
17481 /*Notify UMAC*/
17482 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17483
Jeff Johnsone7245742012-09-05 17:12:55 -070017484 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017485}/*WDI_ProcessPostAssocRsp*/
17486
17487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017488 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017489 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017490
17491 @param pWDICtx: pointer to the WLAN DAL context
17492 pEventData: pointer to the event information structure
17493
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 @see
17495 @return Result of the function call
17496*/
17497WDI_Status
17498WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017499(
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 WDI_ControlBlockType* pWDICtx,
17501 WDI_EventInfoType* pEventData
17502)
17503{
17504 WDI_DelSTARspParamsType wdiDelSTARsp;
17505 WDI_DelSTARspCb wdiDelSTARspCb;
17506 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017507 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17509
17510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017512 -------------------------------------------------------------------------*/
17513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17514 ( NULL == pEventData->pEventData))
17515 {
17516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 }
17521
17522 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17523
17524 /*-------------------------------------------------------------------------
17525 Extract response and send it to UMAC
17526 -------------------------------------------------------------------------*/
17527 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017528 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 sizeof(halDelStaRspMsg.delStaRspParams));
17530
17531 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017532 wdiDelSTARsp.wdiStatus =
17533 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017534
17535 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17536
17537 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17538 if(staType == WDI_STA_ENTRY_SELF)
17539 {
17540 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17541
17542 /* At this point add the self-STA */
17543
17544 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17545 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17546 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17547
17548#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17549#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17550
17551 //all DPU indices are the same for self STA
17552 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17553 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17554 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17555 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17556 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17557 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017558
17559 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 }
17561 else
17562 {
17563 //Delete the station in the table
17564 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17565 }
17566
17567 /*Notify UMAC*/
17568 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17569
Jeff Johnsone7245742012-09-05 17:12:55 -070017570 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017571}/*WDI_ProcessDelSTARsp*/
17572
17573
17574/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017575 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017576==========================================================================*/
17577
17578/**
17579 @brief Process Set BSS Key Rsp function (called when a response
17580 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017581
17582 @param pWDICtx: pointer to the WLAN DAL context
17583 pEventData: pointer to the event information structure
17584
Jeff Johnson295189b2012-06-20 16:38:30 -070017585 @see
17586 @return Result of the function call
17587*/
17588WDI_Status
17589WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017590(
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 WDI_ControlBlockType* pWDICtx,
17592 WDI_EventInfoType* pEventData
17593)
17594{
17595 WDI_Status wdiStatus;
17596 eHalStatus halStatus;
17597 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17599
17600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017602 -------------------------------------------------------------------------*/
17603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17604 ( NULL == pEventData->pEventData))
17605 {
17606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 }
17611
17612 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17613
17614 /*-------------------------------------------------------------------------
17615 Extract response and send it to UMAC
17616 -------------------------------------------------------------------------*/
17617 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017619
17620 if ( eHAL_STATUS_SUCCESS != halStatus )
17621 {
17622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17623 "Set BSS Key failed with status %s (%d)",
17624 WDI_getHALStatusMsgString(halStatus),
17625 halStatus);
17626 /* send the status to UMAC, don't return from here*/
17627 }
17628
17629 /*Notify UMAC*/
17630 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17631
Jeff Johnsone7245742012-09-05 17:12:55 -070017632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017633}/*WDI_ProcessSetBssKeyRsp*/
17634
17635/**
17636 @brief Process Remove BSS Key Rsp function (called when a response
17637 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017638
17639 @param pWDICtx: pointer to the WLAN DAL context
17640 pEventData: pointer to the event information structure
17641
Jeff Johnson295189b2012-06-20 16:38:30 -070017642 @see
17643 @return Result of the function call
17644*/
17645WDI_Status
17646WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017647(
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 WDI_ControlBlockType* pWDICtx,
17649 WDI_EventInfoType* pEventData
17650)
17651{
17652 WDI_Status wdiStatus;
17653 eHalStatus halStatus;
17654 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17656
17657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017659 -------------------------------------------------------------------------*/
17660 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17661 ( NULL == pEventData->pEventData))
17662 {
17663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 }
17668
17669 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17670
17671 /*-------------------------------------------------------------------------
17672 Extract response and send it to UMAC
17673 -------------------------------------------------------------------------*/
17674 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017675 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017676
17677 if ( eHAL_STATUS_SUCCESS != halStatus )
17678 {
17679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17680 "Remove BSS Key failed with status %s (%d )",
17681 WDI_getHALStatusMsgString(halStatus),
17682 halStatus);
17683 /* send the status to UMAC, don't return from here*/
17684 }
17685
17686 /*Notify UMAC*/
17687 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17688
Jeff Johnsone7245742012-09-05 17:12:55 -070017689 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017690}/*WDI_ProcessSetBssKeyRsp*/
17691
17692
17693/**
17694 @brief Process Set STA Key Rsp function (called when a response
17695 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017696
17697 @param pWDICtx: pointer to the WLAN DAL context
17698 pEventData: pointer to the event information structure
17699
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 @see
17701 @return Result of the function call
17702*/
17703WDI_Status
17704WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017705(
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 WDI_ControlBlockType* pWDICtx,
17707 WDI_EventInfoType* pEventData
17708)
17709{
17710 WDI_Status wdiStatus;
17711 eHalStatus halStatus;
17712 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17714
17715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017716 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017717 -------------------------------------------------------------------------*/
17718 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17719 ( NULL == pEventData->pEventData))
17720 {
17721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 }
17726
17727 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17728
17729 /*-------------------------------------------------------------------------
17730 Extract response and send it to UMAC
17731 -------------------------------------------------------------------------*/
17732 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017733 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017734
17735 if ( eHAL_STATUS_SUCCESS != halStatus )
17736 {
17737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17738 "Set STA Key failed with status %s (%d)",
17739 WDI_getHALStatusMsgString(halStatus),
17740 halStatus);
17741 /* send the status to UMAC, don't return from here*/
17742 }
17743
17744 /*Notify UMAC*/
17745 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17746
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017748}/*WDI_ProcessSetSTAKeyRsp*/
17749
17750/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017751 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017752 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017753
17754 @param pWDICtx: pointer to the WLAN DAL context
17755 pEventData: pointer to the event information structure
17756
Jeff Johnson295189b2012-06-20 16:38:30 -070017757 @see
17758 @return Result of the function call
17759*/
17760WDI_Status
17761WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017762(
Jeff Johnson295189b2012-06-20 16:38:30 -070017763 WDI_ControlBlockType* pWDICtx,
17764 WDI_EventInfoType* pEventData
17765)
17766{
17767 WDI_Status wdiStatus;
17768 eHalStatus halStatus;
17769 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17771
17772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017773 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017774 -------------------------------------------------------------------------*/
17775 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17776 ( NULL == pEventData->pEventData))
17777 {
17778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017782 }
17783
17784 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17785
17786 /*-------------------------------------------------------------------------
17787 Extract response and send it to UMAC
17788 -------------------------------------------------------------------------*/
17789 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017790 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017791
17792 if ( eHAL_STATUS_SUCCESS != halStatus )
17793 {
17794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17795 "Remove STA Key failed with status %s (%d)",
17796 WDI_getHALStatusMsgString(halStatus),
17797 halStatus);
17798 /* send the status to UMAC, don't return from here*/
17799 }
17800
17801 /*Notify UMAC*/
17802 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17803
Jeff Johnsone7245742012-09-05 17:12:55 -070017804 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017805}/*WDI_ProcessRemoveStaKeyRsp*/
17806
17807/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017808 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017809 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017810
17811 @param pWDICtx: pointer to the WLAN DAL context
17812 pEventData: pointer to the event information structure
17813
Jeff Johnson295189b2012-06-20 16:38:30 -070017814 @see
17815 @return Result of the function call
17816*/
17817WDI_Status
17818WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017819(
Jeff Johnson295189b2012-06-20 16:38:30 -070017820 WDI_ControlBlockType* pWDICtx,
17821 WDI_EventInfoType* pEventData
17822)
17823{
17824 WDI_Status wdiStatus;
17825 eHalStatus halStatus;
17826 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17828
17829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 -------------------------------------------------------------------------*/
17832 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17833 ( NULL == pEventData->pEventData))
17834 {
17835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017839 }
17840
17841 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17842
17843 /*-------------------------------------------------------------------------
17844 Extract response and send it to UMAC
17845 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017846 wpalMemoryCopy( &halStatus,
17847 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017848 sizeof(halStatus));
17849
Jeff Johnsone7245742012-09-05 17:12:55 -070017850 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017851
17852 if ( eHAL_STATUS_SUCCESS != halStatus )
17853 {
17854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17855 "Set STA Key failed with status %s (%d)",
17856 WDI_getHALStatusMsgString(halStatus),
17857 halStatus);
17858 /* send the status to UMAC, don't return from here*/
17859 }
17860
17861 /*Notify UMAC*/
17862 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17863
Jeff Johnsone7245742012-09-05 17:12:55 -070017864 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017865}/*WDI_ProcessSetSTABcastKeyRsp*/
17866
17867/**
17868 @brief Process Remove STA Bcast Key Rsp function (called when a
17869 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017870
17871 @param pWDICtx: pointer to the WLAN DAL context
17872 pEventData: pointer to the event information structure
17873
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 @see
17875 @return Result of the function call
17876*/
17877WDI_Status
17878WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017879(
Jeff Johnson295189b2012-06-20 16:38:30 -070017880 WDI_ControlBlockType* pWDICtx,
17881 WDI_EventInfoType* pEventData
17882)
17883{
17884 WDI_Status wdiStatus;
17885 eHalStatus halStatus;
17886 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17888
17889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017891 -------------------------------------------------------------------------*/
17892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17893 ( NULL == pEventData->pEventData))
17894 {
17895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017899 }
17900
17901 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17902
17903 /*-------------------------------------------------------------------------
17904 Extract response and send it to UMAC
17905 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017906 wpalMemoryCopy( &halStatus,
17907 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017908 sizeof(halStatus));
17909
Jeff Johnsone7245742012-09-05 17:12:55 -070017910 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017911
17912 if ( eHAL_STATUS_SUCCESS != halStatus )
17913 {
17914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17915 "Remove STA Key failed with status %s (%d)",
17916 WDI_getHALStatusMsgString(halStatus),
17917 halStatus);
17918 /* send the status to UMAC, don't return from here*/
17919 }
17920
17921 /*Notify UMAC*/
17922 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17923
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017925}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17926
17927
17928/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017929 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017930==========================================================================*/
17931
17932/**
17933 @brief Process Add TSpec Rsp function (called when a response
17934 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017935
17936 @param pWDICtx: pointer to the WLAN DAL context
17937 pEventData: pointer to the event information structure
17938
Jeff Johnson295189b2012-06-20 16:38:30 -070017939 @see
17940 @return Result of the function call
17941*/
17942WDI_Status
17943WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017944(
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 WDI_ControlBlockType* pWDICtx,
17946 WDI_EventInfoType* pEventData
17947)
17948{
17949 WDI_Status wdiStatus;
17950 eHalStatus halStatus;
17951 WDI_AddTsRspCb wdiAddTsRspCb;
17952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17953
17954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017956 -------------------------------------------------------------------------*/
17957 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17958 ( NULL == pEventData->pEventData))
17959 {
17960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017964 }
17965
17966 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17967
17968 /*-------------------------------------------------------------------------
17969 Extract response and send it to UMAC
17970 -------------------------------------------------------------------------*/
17971 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017972 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017973
17974 /*Notify UMAC*/
17975 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17976
Jeff Johnsone7245742012-09-05 17:12:55 -070017977 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017978}/*WDI_ProcessAddTSpecRsp*/
17979
17980
Sunil Duttbd736ed2014-05-26 21:19:41 +053017981
17982#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17983
17984WDI_Status
17985WDI_ProcessLLStatsSetRsp
17986(
17987 WDI_ControlBlockType* pWDICtx,
17988 WDI_EventInfoType* pEventData
17989)
17990{
17991 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17992
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053017993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053017994 "%s: Enter ", __func__);
17995 /*-------------------------------------------------------------------------
17996 Sanity check
17997 -------------------------------------------------------------------------*/
17998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17999 ( NULL == pEventData->pEventData))
18000 {
18001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18002 "%s: Invalid parameters", __func__);
18003 WDI_ASSERT(0);
18004 return WDI_STATUS_E_FAILURE;
18005 }
18006
18007 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
18008
18009 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18010
18011 return WDI_STATUS_SUCCESS;
18012}
18013
18014WDI_Status
18015WDI_ProcessLLStatsGetRsp
18016(
18017 WDI_ControlBlockType* pWDICtx,
18018 WDI_EventInfoType* pEventData
18019)
18020{
18021 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
18022
18023 /*-------------------------------------------------------------------------
18024 Sanity check
18025 -------------------------------------------------------------------------*/
18026 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18027 ( NULL == pEventData->pEventData))
18028 {
18029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18030 "%s: Invalid parameters", __func__);
18031 WDI_ASSERT(0);
18032 return WDI_STATUS_E_FAILURE;
18033 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018035 "%s: Enter ", __func__);
18036
18037 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
18038
18039 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18040
18041 return WDI_STATUS_SUCCESS;
18042}
18043
18044WDI_Status
18045WDI_ProcessLLStatsClearRsp
18046(
18047 WDI_ControlBlockType* pWDICtx,
18048 WDI_EventInfoType* pEventData
18049)
18050{
18051 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18052
18053 /*-------------------------------------------------------------------------
18054 Sanity check
18055 -------------------------------------------------------------------------*/
18056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18057 ( NULL == pEventData->pEventData))
18058 {
18059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18060 "%s: Invalid parameters", __func__);
18061 WDI_ASSERT(0);
18062 return WDI_STATUS_E_FAILURE;
18063 }
18064
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018066 "%s: CLEAR RESPONSE CALL BACK", __func__);
18067 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18068
18069 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18070
18071 return WDI_STATUS_SUCCESS;
18072}
18073#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18074
Jeff Johnson295189b2012-06-20 16:38:30 -070018075/**
18076 @brief Process Del TSpec Rsp function (called when a response
18077 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018078
18079 @param pWDICtx: pointer to the WLAN DAL context
18080 pEventData: pointer to the event information structure
18081
Jeff Johnson295189b2012-06-20 16:38:30 -070018082 @see
18083 @return Result of the function call
18084*/
18085WDI_Status
18086WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018087(
Jeff Johnson295189b2012-06-20 16:38:30 -070018088 WDI_ControlBlockType* pWDICtx,
18089 WDI_EventInfoType* pEventData
18090)
18091{
18092 WDI_Status wdiStatus;
18093 eHalStatus halStatus;
18094 WDI_DelTsRspCb wdiDelTsRspCb;
18095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18096
18097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018099 -------------------------------------------------------------------------*/
18100 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18101 ( NULL == pEventData->pEventData))
18102 {
18103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018107 }
18108
18109 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18110
18111 /*-------------------------------------------------------------------------
18112 Extract response and send it to UMAC
18113 -------------------------------------------------------------------------*/
18114 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018115 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018116
18117 /*Notify UMAC*/
18118 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18119
Jeff Johnsone7245742012-09-05 17:12:55 -070018120 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018121}/*WDI_ProcessDelTSpecRsp*/
18122
18123/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018125 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018126
18127 @param pWDICtx: pointer to the WLAN DAL context
18128 pEventData: pointer to the event information structure
18129
Jeff Johnson295189b2012-06-20 16:38:30 -070018130 @see
18131 @return Result of the function call
18132*/
18133WDI_Status
18134WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018135(
Jeff Johnson295189b2012-06-20 16:38:30 -070018136 WDI_ControlBlockType* pWDICtx,
18137 WDI_EventInfoType* pEventData
18138)
18139{
18140 WDI_Status wdiStatus;
18141 eHalStatus halStatus;
18142 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18144
18145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 -------------------------------------------------------------------------*/
18148 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18149 ( NULL == pEventData->pEventData))
18150 {
18151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018155 }
18156
18157 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18158
18159 /*-------------------------------------------------------------------------
18160 Extract response and send it to UMAC
18161 -------------------------------------------------------------------------*/
18162 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018163 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018164
18165 /*Notify UMAC*/
18166 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18167
Jeff Johnsone7245742012-09-05 17:12:55 -070018168 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018169}/*WDI_ProcessUpdateEDCAParamsRsp*/
18170
18171
18172/**
18173 @brief Process Add BA Rsp function (called when a response
18174 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018175
18176 @param pWDICtx: pointer to the WLAN DAL context
18177 pEventData: pointer to the event information structure
18178
Jeff Johnson295189b2012-06-20 16:38:30 -070018179 @see
18180 @return Result of the function call
18181*/
18182WDI_Status
18183WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018184(
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 WDI_ControlBlockType* pWDICtx,
18186 WDI_EventInfoType* pEventData
18187)
18188{
18189 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18190
18191 tAddBASessionRspParams halBASessionRsp;
18192 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18193
Jeff Johnsone7245742012-09-05 17:12:55 -070018194
Jeff Johnson295189b2012-06-20 16:38:30 -070018195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18196
18197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018198 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 -------------------------------------------------------------------------*/
18200 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18201 ( NULL == pEventData->pEventData))
18202 {
18203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 }
18208
18209 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18210
18211 /*-------------------------------------------------------------------------
18212 Extract response and send it to UMAC
18213 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018214 wpalMemoryCopy( &halBASessionRsp,
18215 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018216 sizeof(halBASessionRsp));
18217
18218 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18219
Jeff Johnson43971f52012-07-17 12:26:56 -070018220 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 {
18222 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18223 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18224 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18225 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18226 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18227 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18228 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18229 }
18230
18231 /*Notify UMAC*/
18232 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18233
Jeff Johnsone7245742012-09-05 17:12:55 -070018234 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018235}/*WDI_ProcessAddSessionBARsp*/
18236
18237
18238/**
18239 @brief Process Del BA Rsp function (called when a response
18240 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018241
18242 @param pWDICtx: pointer to the WLAN DAL context
18243 pEventData: pointer to the event information structure
18244
Jeff Johnson295189b2012-06-20 16:38:30 -070018245 @see
18246 @return Result of the function call
18247*/
18248WDI_Status
18249WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018250(
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 WDI_ControlBlockType* pWDICtx,
18252 WDI_EventInfoType* pEventData
18253)
18254{
18255 WDI_Status wdiStatus;
18256 eHalStatus halStatus;
18257 WDI_DelBARspCb wdiDelBARspCb;
18258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18259
18260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018261 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018262 -------------------------------------------------------------------------*/
18263 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18264 ( NULL == pEventData->pEventData))
18265 {
18266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018267 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018270 }
18271
18272 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18273
18274 /*-------------------------------------------------------------------------
18275 Extract response and send it to UMAC
18276 -------------------------------------------------------------------------*/
18277 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018278 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018279
18280 if ( eHAL_STATUS_SUCCESS == halStatus )
18281 {
18282 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18283 }
18284
18285 /*Notify UMAC*/
18286 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18287
Jeff Johnsone7245742012-09-05 17:12:55 -070018288 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018289}/*WDI_ProcessDelBARsp*/
18290
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018291#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018292/**
18293 @brief Process TSM Stats Rsp function (called when a response
18294 is being received over the bus from HAL)
18295
18296 @param pWDICtx: pointer to the WLAN DAL context
18297 pEventData: pointer to the event information structure
18298
18299 @see
18300 @return Result of the function call
18301*/
18302WDI_Status
18303WDI_ProcessTsmStatsRsp
18304(
18305 WDI_ControlBlockType* pWDICtx,
18306 WDI_EventInfoType* pEventData
18307)
18308{
18309 WDI_TsmRspCb wdiTsmStatsRspCb;
18310 tTsmStatsRspMsg halTsmStatsRspMsg;
18311 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18313
18314 /*-------------------------------------------------------------------------
18315 Sanity check
18316 -------------------------------------------------------------------------*/
18317 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18318 ( NULL == pEventData->pEventData))
18319 {
18320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018322 WDI_ASSERT(0);
18323 return WDI_STATUS_E_FAILURE;
18324 }
18325
18326 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18327
18328 /*-------------------------------------------------------------------------
18329 Unpack HAL Response Message - the header was already extracted by the
18330 main Response Handling procedure
18331 -------------------------------------------------------------------------*/
18332 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18333 pEventData->pEventData,
18334 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18335
18336 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18337 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18338 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18339 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18340 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18341 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18342 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18343 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18344 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18345 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18346 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18347 halTsmStatsRspMsg.tsmStatsRspParams.status);
18348
18349 /*Notify UMAC*/
18350 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18351
18352 return WDI_STATUS_SUCCESS;
18353}/*WDI_ProcessTsmStatsRsp*/
18354
18355#endif
18356
18357
18358
18359/**
18360 @brief Process Flush AC Rsp function (called when a response
18361 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018362
18363 @param pWDICtx: pointer to the WLAN DAL context
18364 pEventData: pointer to the event information structure
18365
Jeff Johnson295189b2012-06-20 16:38:30 -070018366 @see
18367 @return Result of the function call
18368*/
18369WDI_Status
18370WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018371(
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 WDI_ControlBlockType* pWDICtx,
18373 WDI_EventInfoType* pEventData
18374)
18375{
18376 WDI_Status wdiStatus;
18377 eHalStatus halStatus;
18378 WDI_FlushAcRspCb wdiFlushAcRspCb;
18379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18380
18381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018383 -------------------------------------------------------------------------*/
18384 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18385 ( NULL == pEventData->pEventData))
18386 {
18387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018391 }
18392
18393 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18394
18395 /*-------------------------------------------------------------------------
18396 Extract response and send it to UMAC
18397 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018398 wpalMemoryCopy( &halStatus,
18399 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018400 sizeof(halStatus));
18401
Jeff Johnsone7245742012-09-05 17:12:55 -070018402 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018403
18404 /*Notify UMAC*/
18405 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18406
Jeff Johnsone7245742012-09-05 17:12:55 -070018407 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018408}/*WDI_ProcessFlushAcRsp*/
18409
18410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018411 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018412 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018413
18414 @param pWDICtx: pointer to the WLAN DAL context
18415 pEventData: pointer to the event information structure
18416
Jeff Johnson295189b2012-06-20 16:38:30 -070018417 @see
18418 @return Result of the function call
18419*/
18420WDI_Status
18421WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018422(
Jeff Johnson295189b2012-06-20 16:38:30 -070018423 WDI_ControlBlockType* pWDICtx,
18424 WDI_EventInfoType* pEventData
18425)
18426{
18427 WDI_Status wdiStatus;
18428 eHalStatus halStatus;
18429 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18431
18432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018433 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018434 -------------------------------------------------------------------------*/
18435 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18436 ( NULL == pEventData->pEventData))
18437 {
18438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018442 }
18443
18444 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18445
18446 /*-------------------------------------------------------------------------
18447 Extract response and send it to UMAC
18448 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018449 wpalMemoryCopy( &halStatus,
18450 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018451 sizeof(halStatus));
18452
Jeff Johnsone7245742012-09-05 17:12:55 -070018453 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018454
18455 /*Notify UMAC*/
18456 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18457
Jeff Johnsone7245742012-09-05 17:12:55 -070018458 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018459}/*WDI_ProcessBtAmpEventRsp*/
18460
18461
18462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018465
18466 @param pWDICtx: pointer to the WLAN DAL context
18467 pEventData: pointer to the event information structure
18468
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 @see
18470 @return Result of the function call
18471*/
18472WDI_Status
18473WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018474(
Jeff Johnson295189b2012-06-20 16:38:30 -070018475 WDI_ControlBlockType* pWDICtx,
18476 WDI_EventInfoType* pEventData
18477)
18478{
18479 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18480 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18481 tAddStaSelfRspMsg halAddStaSelfRsp;
18482 WDI_AddStaParams wdiAddSTAParam = {0};
18483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18484
18485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018487 -------------------------------------------------------------------------*/
18488 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18489 ( NULL == pEventData->pEventData))
18490 {
18491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 }
18496
Jeff Johnsone7245742012-09-05 17:12:55 -070018497 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018498 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18499
18500 /*-------------------------------------------------------------------------
18501 Extract response and send it to UMAC
18502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018503 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18504 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18506
18507
Jeff Johnsone7245742012-09-05 17:12:55 -070018508 wdiAddSTASelfParams.wdiStatus =
18509 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018510
Jeff Johnsone7245742012-09-05 17:12:55 -070018511 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018512 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018513 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018514 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018515 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018516 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18517
18518 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18519 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18520 WDI_MAC_ADDR_LEN);
18521
18522
18523#ifdef HAL_SELF_STA_PER_BSS
18524
18525 /* At this point add the self-STA */
18526
18527 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18528 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18529 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18530
18531 //all DPU indices are the same for self STA
18532
18533 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018534 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18536 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18537 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18538 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18539 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18540
18541 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18542 WDI_MAC_ADDR_LEN);
18543
18544 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18545 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18546
Jeff Johnsone7245742012-09-05 17:12:55 -070018547 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18549 {
18550 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18551 }
18552#endif
18553
18554 /*Notify UMAC*/
18555 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18556
Jeff Johnsone7245742012-09-05 17:12:55 -070018557 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018558}/*WDI_ProcessAddSTASelfRsp*/
18559
18560
18561
18562/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018563 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018564 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018565
18566 @param pWDICtx: pointer to the WLAN DAL context
18567 pEventData: pointer to the event information structure
18568
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 @see
18570 @return Result of the function call
18571*/
18572WDI_Status
18573WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018574(
Jeff Johnson295189b2012-06-20 16:38:30 -070018575 WDI_ControlBlockType* pWDICtx,
18576 WDI_EventInfoType* pEventData
18577)
18578{
18579 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18580 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18581 tDelStaSelfRspParams delStaSelfRspParams;
18582 wpt_uint8 ucStaIdx;
18583
18584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18585
18586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 -------------------------------------------------------------------------*/
18589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18590 ( NULL == pEventData->pEventData))
18591 {
18592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 }
18597
18598 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18599
18600 /*-------------------------------------------------------------------------
18601 Extract response and send it to UMAC
18602 -------------------------------------------------------------------------*/
18603
Jeff Johnsone7245742012-09-05 17:12:55 -070018604 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 (wpt_uint8*)pEventData->pEventData,
18606 sizeof(tDelStaSelfRspParams));
18607
Jeff Johnsone7245742012-09-05 17:12:55 -070018608 wdiDelStaSelfRspParams.wdiStatus =
18609 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018610
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18613 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18614 {
18615 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 delStaSelfRspParams.selfMacAddr,
18618 &ucStaIdx);
18619 if(WDI_STATUS_E_FAILURE == wdiStatus)
18620 {
18621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018622 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018625 }
18626 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18627 }
18628
18629 /*Notify UMAC*/
18630 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18631
18632 return WDI_STATUS_SUCCESS;
18633}
18634
Jeff Johnsone7245742012-09-05 17:12:55 -070018635#ifdef FEATURE_OEM_DATA_SUPPORT
18636/**
18637 @brief Start Oem Data Rsp function (called when a
18638 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018639
Jeff Johnsone7245742012-09-05 17:12:55 -070018640 @param pWDICtx: pointer to the WLAN DAL context
18641 pEventData: pointer to the event information structure
18642
18643 @see
18644 @return Result of the function call
18645*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018646
18647WDI_Status
18648WDI_ProcessStartOemDataRsp
18649(
18650 WDI_ControlBlockType* pWDICtx,
18651 WDI_EventInfoType* pEventData
18652)
18653{
18654 WDI_oemDataRspCb wdiOemDataRspCb;
18655 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18656 tStartOemDataRspParams* halStartOemDataRspParams;
18657
18658 /*-------------------------------------------------------------------------
18659 Sanity check
18660 -------------------------------------------------------------------------*/
18661 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18662 ( NULL == pEventData->pEventData))
18663 {
18664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018665 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018666 WDI_ASSERT(0);
18667 return WDI_STATUS_E_FAILURE;
18668 }
18669
18670 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18671
18672 /*-------------------------------------------------------------------------
18673 Extract response and send it to UMAC
18674 -------------------------------------------------------------------------*/
18675 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18676
18677
18678 //It is the responsibility of the application code to check for failure
18679 //conditions!
18680
18681 //Allocate memory for WDI OEM DATA RSP structure
18682 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18683
18684 if(NULL == wdiOemDataRspParams)
18685 {
18686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018687 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 pWDICtx, pEventData, pEventData->pEventData);
18689 WDI_ASSERT(0);
18690 return WDI_STATUS_E_FAILURE;
18691 }
18692
18693 /* Populate WDI structure members */
18694 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18695
18696 /*Notify UMAC*/
18697 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18698
18699 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18700 wpalMemoryFree(wdiOemDataRspParams);
18701
18702 return WDI_STATUS_SUCCESS;
18703}/*WDI_PrcoessStartOemDataRsp*/
18704#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018705
18706/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018707 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018708===========================================================================*/
18709
18710/**
18711 @brief Process Channel Switch Rsp function (called when a response
18712 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018713
18714 @param pWDICtx: pointer to the WLAN DAL context
18715 pEventData: pointer to the event information structure
18716
Jeff Johnson295189b2012-06-20 16:38:30 -070018717 @see
18718 @return Result of the function call
18719*/
18720WDI_Status
18721WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018722(
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 WDI_ControlBlockType* pWDICtx,
18724 WDI_EventInfoType* pEventData
18725)
18726{
18727 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18728 WDI_SwitchChRspCb wdiChSwitchRspCb;
18729 tSwitchChannelRspParams halSwitchChannelRsp;
18730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18731
18732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 -------------------------------------------------------------------------*/
18735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18736 ( NULL == pEventData->pEventData))
18737 {
18738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 }
18743
18744 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18745
18746 /*-------------------------------------------------------------------------
18747 Extract response and send it to UMAC
18748 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018749 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018750 (wpt_uint8*)pEventData->pEventData,
18751 sizeof(halSwitchChannelRsp));
18752
Jeff Johnsone7245742012-09-05 17:12:55 -070018753 wdiSwitchChRsp.wdiStatus =
18754 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018755 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18756
18757#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018758 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018759#endif
18760
18761 /*Notify UMAC*/
18762 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18763
Jeff Johnsone7245742012-09-05 17:12:55 -070018764 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018765}/*WDI_ProcessChannelSwitchRsp*/
18766
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018767/**
18768 @brief Process Channel Switch Rsp function (called when a response
18769 is being received over the bus from HAL against
18770 WDI_ProcessChannelSwitchReq_V1)
18771
18772 @param pWDICtx: pointer to the WLAN DAL context
18773 pEventData: pointer to the event information structure
18774
18775 @see
18776 @return Result of the function call
18777*/
18778
18779WDI_Status
18780WDI_ProcessChannelSwitchRsp_V1
18781(
18782 WDI_ControlBlockType* pWDICtx,
18783 WDI_EventInfoType* pEventData
18784)
18785{
18786 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18787 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18788 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18790
18791 /*-------------------------------------------------------------------------
18792 Sanity check
18793 -------------------------------------------------------------------------*/
18794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18795 ( NULL == pEventData->pEventData))
18796 {
18797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18798 "%s: Invalid parameters", __func__);
18799 WDI_ASSERT(0);
18800 return WDI_STATUS_E_FAILURE;
18801 }
18802
18803 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18804
18805 /*-------------------------------------------------------------------------
18806 Extract response and send it to UMAC
18807 -------------------------------------------------------------------------*/
18808 wpalMemoryCopy( &halSwitchChannelRsp,
18809 (wpt_uint8*)pEventData->pEventData,
18810 sizeof(halSwitchChannelRsp));
18811
18812 wdiSwitchChRsp.wdiStatus =
18813 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18814 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18815
18816#ifdef WLAN_FEATURE_VOWIFI
18817 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18818#endif
18819
18820 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18821 if (( NULL == wdiChSwitchRspCb ) )
18822 {
18823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18824 "%s: ### Call back function is null", __func__);
18825 WDI_ASSERT(0);
18826 return WDI_STATUS_E_FAILURE;
18827 }
18828 /*Notify UMAC*/
18829 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18830
18831 return WDI_STATUS_SUCCESS;
18832}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018833
18834/**
18835 @brief Process Config STA Rsp function (called when a response
18836 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018837
18838 @param pWDICtx: pointer to the WLAN DAL context
18839 pEventData: pointer to the event information structure
18840
Jeff Johnson295189b2012-06-20 16:38:30 -070018841 @see
18842 @return Result of the function call
18843*/
18844WDI_Status
18845WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018846(
Jeff Johnson295189b2012-06-20 16:38:30 -070018847 WDI_ControlBlockType* pWDICtx,
18848 WDI_EventInfoType* pEventData
18849)
18850{
18851 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18852 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18853 WDI_AddStaParams wdiAddSTAParam;
18854
18855 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018856 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018857
Jeff Johnsone7245742012-09-05 17:12:55 -070018858 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18860
18861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018862 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018863 -------------------------------------------------------------------------*/
18864 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18865 ( NULL == pEventData->pEventData))
18866 {
18867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 }
18872
18873 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18874
18875 /*-------------------------------------------------------------------------
18876 Extract response and send it to UMAC
18877 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18879 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018880 sizeof(halConfigStaRsp.configStaRspParams));
18881
18882
18883 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18884 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18885 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18886 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18887 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18888
18889 /* MAC Address of STA - take from cache as it does not come back in the
18890 response*/
18891 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018892 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018893 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018894
18895 wdiCfgSTAParams.wdiStatus =
18896 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018897
18898 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18899 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18900 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18901
18902 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18903 {
18904 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18905 {
18906 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018907 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18909 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018910
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018912 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018913 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018914 wdiAddSTAParam.ucHTCapable =
18915 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18916 wdiAddSTAParam.ucStaType =
18917 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018918 wdiAddSTAParam.ucRmfEnabled =
18919 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018920
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018922 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18923 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018925
18926 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18927 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18928 WDI_MAC_ADDR_LEN);
18929
18930 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18931 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18932 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018933
18934 if ( NULL == pBSSSes )
18935 {
18936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18937 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018938
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018941 }
18942
18943 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018944 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018946 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018947 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018948 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018949 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018950 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018952 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018953
Jeff Johnson295189b2012-06-20 16:38:30 -070018954 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18955 }
18956 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18957 {
18958 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18959
Jeff Johnsone7245742012-09-05 17:12:55 -070018960 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018962 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018964 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018966 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018968 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018970 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018972 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 halConfigStaRsp.configStaRspParams.ucUcastSig;
18974 }
18975 }
18976
18977 /*Notify UMAC*/
18978 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18979
Jeff Johnsone7245742012-09-05 17:12:55 -070018980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018981}/*WDI_ProcessConfigStaRsp*/
18982
18983
18984/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018985 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018986 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018987
18988 @param pWDICtx: pointer to the WLAN DAL context
18989 pEventData: pointer to the event information structure
18990
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 @see
18992 @return Result of the function call
18993*/
18994WDI_Status
18995WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018996(
Jeff Johnson295189b2012-06-20 16:38:30 -070018997 WDI_ControlBlockType* pWDICtx,
18998 WDI_EventInfoType* pEventData
18999)
19000{
19001 WDI_Status wdiStatus;
19002 eHalStatus halStatus;
19003 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
19004
19005 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019006 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19008
19009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019010 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019011 -------------------------------------------------------------------------*/
19012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19013 ( NULL == pEventData->pEventData))
19014 {
19015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 }
19020
19021 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
19022
19023 wpalMutexAcquire(&pWDICtx->wptMutex);
19024
19025 /*If the link is being transitioned to idle - the BSS is to be deleted
19026 - this type of ending a session is possible when UMAC has failed an
19027 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019028 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19030 {
19031 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070019033 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019034 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19035 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
19036 &pBSSSes);
19037
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 /*-----------------------------------------------------------------------
19039 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070019040 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 -----------------------------------------------------------------------*/
19042 if ( NULL == pBSSSes )
19043 {
19044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19045 "Set link response received outside association session");
19046 }
19047 else
19048 {
19049 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19050 will be del BSS coming after this to stop the beaconing & cleaning up the
19051 sessions*/
19052 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19053 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19054 {
19055 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019056 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 -----------------------------------------------------------------------*/
19058 WDI_DeleteSession(pWDICtx, pBSSSes);
19059
19060 /*-----------------------------------------------------------------------
19061 Check to see if this association is in progress - if so disable the
19062 flag as this has ended
19063 -----------------------------------------------------------------------*/
19064 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 /*Association no longer in progress */
19067 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19068 /*Association no longer in progress - prepare pending assoc for processing*/
19069 WDI_DequeueAssocRequest(pWDICtx);
19070 }
19071 }
19072 }
19073 }
19074 /* If the link state has been set to POST ASSOC, reset the "association in
19075 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019076 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19078 {
19079 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19080 WDI_DequeueAssocRequest(pWDICtx);
19081 }
19082
19083 wpalMutexRelease(&pWDICtx->wptMutex);
19084
19085 /*-------------------------------------------------------------------------
19086 Extract response and send it to UMAC
19087 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019088 wpalMemoryCopy( &halStatus,
19089 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019090 sizeof(halStatus));
19091
Jeff Johnsone7245742012-09-05 17:12:55 -070019092 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019093
19094 /*Notify UMAC*/
19095 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19096
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019098}/*WDI_ProcessSetLinkStateRsp*/
19099
19100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019101 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019103
19104 @param pWDICtx: pointer to the WLAN DAL context
19105 pEventData: pointer to the event information structure
19106
Jeff Johnson295189b2012-06-20 16:38:30 -070019107 @see
19108 @return Result of the function call
19109*/
19110WDI_Status
19111WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019112(
Jeff Johnson295189b2012-06-20 16:38:30 -070019113 WDI_ControlBlockType* pWDICtx,
19114 WDI_EventInfoType* pEventData
19115)
19116{
19117 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19118 WDI_GetStatsRspCb wdiGetStatsRspCb;
19119 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019120
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19122
19123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019124 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019125 -------------------------------------------------------------------------*/
19126 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19127 ( NULL == pEventData->pEventData))
19128 {
19129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019133 }
19134
19135 /*-------------------------------------------------------------------------
19136 Extract response and send it to UMAC
19137 -------------------------------------------------------------------------*/
19138 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19139
19140 /*allocate the stats response buffer */
19141 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19142 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19143 + sizeof(WDI_GetStatsRspParamsType));
19144
19145 if(NULL == wdiGetStatsRsp)
19146 {
19147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019148 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 pWDICtx, pEventData, pEventData->pEventData);
19150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019152 }
19153
19154 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19155
19156 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19157 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19158 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19159 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19160 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19161 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19162
19163 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19164 wpalMemoryCopy(wdiGetStatsRsp + 1,
19165 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19166 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19167
19168 /*Notify UMAC*/
19169 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19170
19171 wpalMemoryFree(wdiGetStatsRsp);
19172
Jeff Johnsone7245742012-09-05 17:12:55 -070019173 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019174}/*WDI_ProcessGetStatsRsp*/
19175
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019176#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019177/**
19178 @brief Process Get Roam Rssi Rsp function (called when a response is
19179 being received over the bus from HAL)
19180
19181 @param pWDICtx: pointer to the WLAN DAL context
19182 pEventData: pointer to the event information structure
19183
19184 @see
19185 @return Result of the function call
19186*/
19187WDI_Status
19188WDI_ProcessGetRoamRssiRsp
19189(
19190 WDI_ControlBlockType* pWDICtx,
19191 WDI_EventInfoType* pEventData
19192)
19193{
19194 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19195 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19196 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19198
19199 /*-------------------------------------------------------------------------
19200 Sanity check
19201 -------------------------------------------------------------------------*/
19202 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19203 ( NULL == pEventData->pEventData))
19204 {
19205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19206 "%s: Invalid parameters", __func__);
19207 WDI_ASSERT(0);
19208 return WDI_STATUS_E_FAILURE;
19209 }
19210
19211 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19212 if(NULL == wdiGetRoamRssiRspCb)
19213 {
19214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19215 "%s: call back function is NULL", __func__);
19216 WDI_ASSERT(0);
19217 return WDI_STATUS_E_FAILURE;
19218 }
19219
19220 /*-------------------------------------------------------------------------
19221 Extract response and send it to UMAC
19222 -------------------------------------------------------------------------*/
19223 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19224 pEventData->pEventData,
19225 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19226
19227 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19228 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19229 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19230
19231 /*Notify UMAC*/
19232 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19233
19234 return WDI_STATUS_SUCCESS;
19235}/*WDI_ProcessGetRoamRssiRsp*/
19236#endif
19237
Jeff Johnson295189b2012-06-20 16:38:30 -070019238
19239/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019240 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019241 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019242
19243 @param pWDICtx: pointer to the WLAN DAL context
19244 pEventData: pointer to the event information structure
19245
Jeff Johnson295189b2012-06-20 16:38:30 -070019246 @see
19247 @return Result of the function call
19248*/
19249WDI_Status
19250WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019251(
Jeff Johnson295189b2012-06-20 16:38:30 -070019252 WDI_ControlBlockType* pWDICtx,
19253 WDI_EventInfoType* pEventData
19254)
19255{
19256 WDI_Status wdiStatus;
19257 eHalStatus halStatus;
19258 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19260
19261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019263 -------------------------------------------------------------------------*/
19264 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19265 ( NULL == pEventData->pEventData))
19266 {
19267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019271 }
19272
19273 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19274
19275 /*-------------------------------------------------------------------------
19276 Extract response and send it to UMAC
19277 -------------------------------------------------------------------------*/
19278 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019279 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019280
19281 /*Notify UMAC*/
19282 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19283
Jeff Johnsone7245742012-09-05 17:12:55 -070019284 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019285}/*WDI_ProcessUpdateCfgRsp*/
19286
19287
19288
19289/**
19290 @brief Process Add BA Rsp function (called when a response
19291 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019292
19293 @param pWDICtx: pointer to the WLAN DAL context
19294 pEventData: pointer to the event information structure
19295
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 @see
19297 @return Result of the function call
19298*/
19299WDI_Status
19300WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019301(
Jeff Johnson295189b2012-06-20 16:38:30 -070019302 WDI_ControlBlockType* pWDICtx,
19303 WDI_EventInfoType* pEventData
19304)
19305{
19306 WDI_AddBARspCb wdiAddBARspCb;
19307
19308 tAddBARspParams halAddBARsp;
19309 WDI_AddBARspinfoType wdiAddBARsp;
19310
19311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19312
19313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 -------------------------------------------------------------------------*/
19316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19317 ( NULL == pEventData->pEventData))
19318 {
19319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019323 }
19324
19325 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19326
19327 /*-------------------------------------------------------------------------
19328 Extract response and send it to UMAC
19329 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019330 wpalMemoryCopy( &halAddBARsp,
19331 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019332 sizeof(halAddBARsp));
19333
19334 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19335
Jeff Johnson43971f52012-07-17 12:26:56 -070019336 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019337 {
19338 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19339 }
19340
19341 /*Notify UMAC*/
19342 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19343
Jeff Johnsone7245742012-09-05 17:12:55 -070019344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019345}/*WDI_ProcessAddSessionBARsp*/
19346
19347/**
19348 @brief Process Add BA Rsp function (called when a response
19349 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019350
19351 @param pWDICtx: pointer to the WLAN DAL context
19352 pEventData: pointer to the event information structure
19353
Jeff Johnson295189b2012-06-20 16:38:30 -070019354 @see
19355 @return Result of the function call
19356*/
19357WDI_Status
19358WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019359(
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 WDI_ControlBlockType* pWDICtx,
19361 WDI_EventInfoType* pEventData
19362)
19363{
19364 WDI_TriggerBARspCb wdiTriggerBARspCb;
19365
19366 tTriggerBARspParams* halTriggerBARsp;
19367 tTriggerBaRspCandidate* halBaCandidate;
19368 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19369 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19370 wpt_uint16 index;
19371 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019372 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19374
19375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019377 -------------------------------------------------------------------------*/
19378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19379 ( NULL == pEventData->pEventData))
19380 {
19381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 }
19386
19387 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19388
19389 /*-------------------------------------------------------------------------
19390 Extract response and send it to UMAC
19391 -------------------------------------------------------------------------*/
19392 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19393
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019394 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19395
19396 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19397 {
19398 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019399 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019400 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019401
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019402 if(NULL == wdiTriggerBARsp)
19403 {
19404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019405 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019406 pWDICtx, pEventData, pEventData->pEventData);
19407 WDI_ASSERT(0);
19408 return WDI_STATUS_E_FAILURE;
19409 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019410
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019411 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19412
Jeff Johnson295189b2012-06-20 16:38:30 -070019413 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019414 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019415 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19416
19417 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19418 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19419
19420 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19421 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019422 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019423 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19424 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19425 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019426 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019427 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019428 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19430 }
19431 wdiTriggerBARspCandidate++;
19432 halBaCandidate++;
19433 }
19434 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019435 else
19436 {
19437 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19438
19439 if(NULL == wdiTriggerBARsp)
19440 {
19441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019442 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019443 pWDICtx, pEventData, pEventData->pEventData);
19444 WDI_ASSERT(0);
19445 return WDI_STATUS_E_FAILURE;
19446 }
19447
19448 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19449
19450 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019451
19452 /*Notify UMAC*/
19453 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19454
19455 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019456 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019457}/*WDI_ProcessAddSessionBARsp*/
19458
19459/**
19460 @brief Process Update Beacon Params Rsp function (called when a response
19461 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019462
19463 @param pWDICtx: pointer to the WLAN DAL context
19464 pEventData: pointer to the event information structure
19465
Jeff Johnson295189b2012-06-20 16:38:30 -070019466 @see
19467 @return Result of the function call
19468*/
19469WDI_Status
19470WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019471(
Jeff Johnson295189b2012-06-20 16:38:30 -070019472 WDI_ControlBlockType* pWDICtx,
19473 WDI_EventInfoType* pEventData
19474)
19475{
19476 WDI_Status wdiStatus;
19477 eHalStatus halStatus;
19478 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19480
19481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 -------------------------------------------------------------------------*/
19484 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19485 ( NULL == pEventData->pEventData))
19486 {
19487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019491 }
19492
19493 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19494
19495 /*-------------------------------------------------------------------------
19496 Extract response and send it to UMAC
19497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019498 wpalMemoryCopy( &halStatus,
19499 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019500 sizeof(halStatus));
19501
Jeff Johnsone7245742012-09-05 17:12:55 -070019502 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019503
19504 /*Notify UMAC*/
19505 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19506
Jeff Johnsone7245742012-09-05 17:12:55 -070019507 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019508}/*WDI_ProcessUpdateBeaconParamsRsp*/
19509
19510/**
19511 @brief Process Send Beacon template Rsp function (called when a response
19512 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019513
19514 @param pWDICtx: pointer to the WLAN DAL context
19515 pEventData: pointer to the event information structure
19516
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 @see
19518 @return Result of the function call
19519*/
19520WDI_Status
19521WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019522(
Jeff Johnson295189b2012-06-20 16:38:30 -070019523 WDI_ControlBlockType* pWDICtx,
19524 WDI_EventInfoType* pEventData
19525)
19526{
19527 WDI_Status wdiStatus;
19528 eHalStatus halStatus;
19529 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19531
19532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 -------------------------------------------------------------------------*/
19535 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19536 ( NULL == pEventData->pEventData))
19537 {
19538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019542 }
19543
19544 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19545
19546 /*-------------------------------------------------------------------------
19547 Extract response and send it to UMAC
19548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019549 wpalMemoryCopy( &halStatus,
19550 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 sizeof(halStatus));
19552
Jeff Johnsone7245742012-09-05 17:12:55 -070019553 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019554
19555 /*Notify UMAC*/
19556 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19557
Jeff Johnsone7245742012-09-05 17:12:55 -070019558 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019559}/*WDI_ProcessSendBeaconParamsRsp*/
19560
Jeff Johnsone7245742012-09-05 17:12:55 -070019561
Jeff Johnson295189b2012-06-20 16:38:30 -070019562/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019563 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019564 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019565
19566 @param pWDICtx: pointer to the WLAN DAL context
19567 pEventData: pointer to the event information structure
19568
Jeff Johnson295189b2012-06-20 16:38:30 -070019569 @see
19570 @return Result of the function call
19571*/
19572WDI_Status
19573WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019574(
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 WDI_ControlBlockType* pWDICtx,
19576 WDI_EventInfoType* pEventData
19577)
19578{
19579 WDI_Status wdiStatus;
19580 eHalStatus halStatus;
19581 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19583
19584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019586 -------------------------------------------------------------------------*/
19587 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19588 ( NULL == pEventData->pEventData))
19589 {
19590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 }
19595
19596 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19597
19598 /*-------------------------------------------------------------------------
19599 Extract response and send it to UMAC
19600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019601 wpalMemoryCopy( &halStatus,
19602 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019603 sizeof(halStatus));
19604
Jeff Johnsone7245742012-09-05 17:12:55 -070019605 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019606
19607 /*Notify UMAC*/
19608 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19609
Jeff Johnsone7245742012-09-05 17:12:55 -070019610 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019611}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19612
19613 /**
19614 @brief Process Set Max Tx Power Rsp function (called when a response
19615 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019616
19617 @param pWDICtx: pointer to the WLAN DAL context
19618 pEventData: pointer to the event information structure
19619
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 @see
19621 @return Result of the function call
19622*/
19623WDI_Status
19624WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019625(
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 WDI_ControlBlockType* pWDICtx,
19627 WDI_EventInfoType* pEventData
19628)
19629{
19630 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019631
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019633
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19636
19637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 -------------------------------------------------------------------------*/
19640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19641 ( NULL == pEventData->pEventData))
19642 {
19643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 }
19648
19649 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19650
19651 /*-------------------------------------------------------------------------
19652 Extract response and send it to UMAC
19653 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19655 pEventData->pEventData,
19656 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019657
19658 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19659 {
19660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19661 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 }
19664
Jeff Johnsone7245742012-09-05 17:12:55 -070019665 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019668
19669 /*Notify UMAC*/
19670 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19671
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019673}
19674
schang86c22c42013-03-13 18:41:24 -070019675 /**
19676 @brief Process Set Tx Power Rsp function (called when a response
19677 is being received over the bus from HAL)
19678
19679 @param pWDICtx: pointer to the WLAN DAL context
19680 pEventData: pointer to the event information structure
19681
19682 @see
19683 @return Result of the function call
19684*/
19685WDI_Status
19686WDI_ProcessSetTxPowerRsp
19687(
19688 WDI_ControlBlockType* pWDICtx,
19689 WDI_EventInfoType* pEventData
19690)
19691{
19692 tSetTxPwrRspMsg halTxpowerrsp;
19693 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19694 WDA_SetTxPowerRspCb wdiReqStatusCb;
19695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19696
19697 /*-------------------------------------------------------------------------
19698 Sanity check
19699 -------------------------------------------------------------------------*/
19700 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19701 ( NULL == pEventData->pEventData))
19702 {
19703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19704 "%s: Invalid parameters", __func__);
19705 WDI_ASSERT(0);
19706 return WDI_STATUS_E_FAILURE;
19707 }
19708
19709 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19710
19711 /*-------------------------------------------------------------------------
19712 Extract response and send it to UMAC
19713 -------------------------------------------------------------------------*/
19714 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19715 pEventData->pEventData,
19716 sizeof(halTxpowerrsp.setTxPwrRspParams));
19717
19718 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19719 {
19720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19721 "Error status returned in Set Tx Power Response ");
19722 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19723 return WDI_STATUS_E_FAILURE;
19724 }
19725
19726 wdiSetTxPowerRspMsg.wdiStatus =
19727 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19728
19729 /*Notify UMAC*/
19730 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19731
19732 return WDI_STATUS_SUCCESS;
19733}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019734
19735/**
19736 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19737 is being received over the bus from HAL)
19738
19739 @param pWDICtx: pointer to the WLAN DAL context
19740 pEventData: pointer to the event information structure
19741
19742 @see
19743 @return Result of the function call
19744*/
19745WDI_Status
19746WDI_ProcessSetMaxTxPowerPerBandRsp
19747(
19748 WDI_ControlBlockType* pWDICtx,
19749 WDI_EventInfoType* pEventData
19750)
19751{
19752 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19753 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19754 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19756
19757 /*-------------------------------------------------------------------------
19758 Sanity check
19759 -------------------------------------------------------------------------*/
19760 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19761 ( NULL == pEventData->pEventData))
19762 {
19763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19764 "%s: Invalid parameters", __func__);
19765 WDI_ASSERT(0);
19766 return WDI_STATUS_E_FAILURE;
19767 }
19768
19769 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19770
19771 /*-------------------------------------------------------------------------
19772 Extract response and send it to UMAC
19773 -------------------------------------------------------------------------*/
19774 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19775 pEventData->pEventData,
19776 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19777
19778 if (eHAL_STATUS_SUCCESS !=
19779 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19780 {
19781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19782 "Error status returned in Set Max Tx Power Per Band Response");
19783 return WDI_STATUS_E_FAILURE;
19784 }
19785
19786 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19787 WDI_HAL_2_WDI_STATUS(
19788 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19789
19790 /* Notify UMAC */
19791 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19792
19793 return WDI_STATUS_SUCCESS;
19794}
19795
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019796#ifdef FEATURE_WLAN_TDLS
19797/**
19798 @brief Process TDLS Link Establish Rsp function (called
19799 when a response is being received over the bus from HAL)
19800
19801 @param pWDICtx: pointer to the WLAN DAL context
19802 pEventData: pointer to the event information structure
19803
19804 @see
19805 @return Result of the function call
19806*/
19807WDI_Status
19808WDI_ProcessLinkEstablishReqRsp
19809(
19810 WDI_ControlBlockType* pWDICtx,
19811 WDI_EventInfoType* pEventData
19812)
19813{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019814 eHalStatus halStatus;
19815 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019816 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19817 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19818
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19820
19821 /*-------------------------------------------------------------------------
19822 Sanity check
19823 -------------------------------------------------------------------------*/
19824 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19825 ( NULL == pEventData->pEventData))
19826 {
19827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19828 "%s: Invalid parameters", __func__);
19829 WDI_ASSERT(0);
19830 return WDI_STATUS_E_FAILURE;
19831 }
19832
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019833 /*-------------------------------------------------------------------------
19834 Extract indication and send it to UMAC
19835 -------------------------------------------------------------------------*/
19836 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19837 pEventData->pEventData,
19838 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19839
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019840 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19841
19842 /*-------------------------------------------------------------------------
19843 Extract response and send it to UMAC
19844 -------------------------------------------------------------------------*/
19845 wpalMemoryCopy( &halStatus,
19846 pEventData->pEventData,
19847 sizeof(halStatus));
19848
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019849 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19850 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019851
19852 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019853 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019854
19855 return WDI_STATUS_SUCCESS;
19856}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019857
19858
19859
19860/**
19861 @brief Process TDLS Chan switch Rsp function (called
19862 when a response is being received over the bus from HAL)
19863
19864 @param pWDICtx: pointer to the WLAN DAL context
19865 pEventData: pointer to the event information structure
19866
19867 @see
19868 @return Result of the function call
19869*/
19870WDI_Status
19871WDI_ProcessChanSwitchReqRsp
19872(
19873 WDI_ControlBlockType* pWDICtx,
19874 WDI_EventInfoType* pEventData
19875)
19876{
19877 eHalStatus halStatus;
19878 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19879 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19880 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19881
19882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19883
19884 /*-------------------------------------------------------------------------
19885 Sanity check
19886 -------------------------------------------------------------------------*/
19887 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19888 ( NULL == pEventData->pEventData))
19889 {
19890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19891 "%s: Invalid parameters", __func__);
19892 WDI_ASSERT(0);
19893 return WDI_STATUS_E_FAILURE;
19894 }
19895
19896 /*-------------------------------------------------------------------------
19897 Extract indication and send it to UMAC
19898 -------------------------------------------------------------------------*/
19899 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19900 pEventData->pEventData,
19901 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19902
19903 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19904
19905 /*-------------------------------------------------------------------------
19906 Extract response and send it to UMAC
19907 -------------------------------------------------------------------------*/
19908 wpalMemoryCopy( &halStatus,
19909 pEventData->pEventData,
19910 sizeof(halStatus));
19911
19912 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19913 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19914
19915 /*Notify UMAC*/
19916 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19917
19918 return WDI_STATUS_SUCCESS;
19919}/*WDI_ProcessChanSwitchReqRsp*/
19920
19921
19922
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019923#endif
schang86c22c42013-03-13 18:41:24 -070019924
Jeff Johnson295189b2012-06-20 16:38:30 -070019925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019926 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019927 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019928
19929 @param pWDICtx: pointer to the WLAN DAL context
19930 pEventData: pointer to the event information structure
19931
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 @see
19933 @return Result of the function call
19934*/
19935WDI_Status
19936WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019937(
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 WDI_ControlBlockType* pWDICtx,
19939 WDI_EventInfoType* pEventData
19940)
19941{
19942 WDI_Status wdiStatus;
19943 eHalStatus halStatus;
19944 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19946
19947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019949 -------------------------------------------------------------------------*/
19950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19951 ( NULL == pEventData->pEventData))
19952 {
19953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019957 }
19958
19959 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19960
19961 /*-------------------------------------------------------------------------
19962 Extract response and send it to UMAC
19963 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019964 wpalMemoryCopy( &halStatus,
19965 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019966 sizeof(halStatus));
19967
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019969
19970 /*Notify UMAC*/
19971 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19972
Jeff Johnsone7245742012-09-05 17:12:55 -070019973 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019974}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019975/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019976 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019977 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019978
19979 @param pWDICtx: pointer to the WLAN DAL context
19980 pEventData: pointer to the event information structure
19981
Jeff Johnson295189b2012-06-20 16:38:30 -070019982 @see
19983 @return Result of the function call
19984*/
19985WDI_Status
19986WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019987(
Jeff Johnson295189b2012-06-20 16:38:30 -070019988 WDI_ControlBlockType* pWDICtx,
19989 WDI_EventInfoType* pEventData
19990)
19991{
19992 WDI_Status wdiStatus;
19993 eHalStatus halStatus;
19994 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019995 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19997
19998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020000 -------------------------------------------------------------------------*/
20001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20002 ( NULL == pEventData->pEventData))
20003 {
20004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 }
20009
20010 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
20011
20012 /*-------------------------------------------------------------------------
20013 Extract response and send it to UMAC
20014 -------------------------------------------------------------------------*/
20015 halStatus = *((eHalStatus*)pEventData->pEventData);
20016
Jeff Johnsone7245742012-09-05 17:12:55 -070020017 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020018
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020019 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
20020 * Other module states are taken care by PMC.
20021 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
20022 */
20023 if (wdiStatus != WDI_STATUS_SUCCESS) {
20024
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20026 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
20027 halStatus);
20028 /* Call Back is not required as we are putting the DXE in FULL
20029 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020030 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20031
20032 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
20033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020034 "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 -080020035 WDI_ASSERT(0);
20036 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020037 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020038 /*Notify UMAC*/
20039 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20040
Jeff Johnsone7245742012-09-05 17:12:55 -070020041 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020042}/*WDI_ProcessEnterImpsRsp*/
20043
20044/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020045 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020047
20048 @param pWDICtx: pointer to the WLAN DAL context
20049 pEventData: pointer to the event information structure
20050
Jeff Johnson295189b2012-06-20 16:38:30 -070020051 @see
20052 @return Result of the function call
20053*/
20054WDI_Status
20055WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020056(
Jeff Johnson295189b2012-06-20 16:38:30 -070020057 WDI_ControlBlockType* pWDICtx,
20058 WDI_EventInfoType* pEventData
20059)
20060{
20061 WDI_Status wdiStatus;
20062 eHalStatus halStatus;
20063 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020064 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20066
20067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020069 -------------------------------------------------------------------------*/
20070 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20071 ( NULL == pEventData->pEventData))
20072 {
20073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 }
20078
20079 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20080
20081 /*-------------------------------------------------------------------------
20082 Extract response and send it to UMAC
20083 -------------------------------------------------------------------------*/
20084 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020086
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020087 if (halStatus != eHAL_STATUS_SUCCESS)
20088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20089 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20090
Jeff Johnson295189b2012-06-20 16:38:30 -070020091 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020092 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20093 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20094 {
20095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020096 "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 -080020097 WDI_ASSERT(0);
20098 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020099 /*Notify UMAC*/
20100 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20101
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020103}/*WDI_ProcessExitImpsRsp*/
20104
20105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020106 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020107 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020108
20109 @param pWDICtx: pointer to the WLAN DAL context
20110 pEventData: pointer to the event information structure
20111
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 @see
20113 @return Result of the function call
20114*/
20115WDI_Status
20116WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020117(
Jeff Johnson295189b2012-06-20 16:38:30 -070020118 WDI_ControlBlockType* pWDICtx,
20119 WDI_EventInfoType* pEventData
20120)
20121{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020122 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20123 tHalEnterBmpsRspParams halEnterBmpsRsp;
20124 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20125 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020126 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20128
20129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 -------------------------------------------------------------------------*/
20132 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20133 ( NULL == pEventData->pEventData))
20134 {
20135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 }
20140
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020142 Extract response and send it to UMAC
20143 -------------------------------------------------------------------------*/
20144 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20145 {
20146 wpalMemoryCopy( &halEnterBmpsRsp,
20147 pEventData->pEventData,
20148 sizeof(halEnterBmpsRsp));
20149
20150 //Used to print debug message
20151 halStatus = halEnterBmpsRsp.status;
20152 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20153 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20154 }
20155 else
20156 {
20157 halStatus = *((eHalStatus*)pEventData->pEventData);
20158 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20159 }
20160
20161 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020162
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020163 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20164 * Other module states are taken care by PMC.
20165 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20166 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020167 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20168 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020169
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020171 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20172 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020173 /* Call Back is not required as we are putting the DXE in FULL
20174 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020175 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20176 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20177 {
20178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020179 "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 -080020180 WDI_ASSERT(0);
20181 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020182 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020183 }
20184
Jeff Johnson295189b2012-06-20 16:38:30 -070020185 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020186 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020187
Jeff Johnsone7245742012-09-05 17:12:55 -070020188 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020189}/*WDI_ProcessEnterBmpsRsp*/
20190
20191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020194
20195 @param pWDICtx: pointer to the WLAN DAL context
20196 pEventData: pointer to the event information structure
20197
Jeff Johnson295189b2012-06-20 16:38:30 -070020198 @see
20199 @return Result of the function call
20200*/
20201WDI_Status
20202WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020203(
Jeff Johnson295189b2012-06-20 16:38:30 -070020204 WDI_ControlBlockType* pWDICtx,
20205 WDI_EventInfoType* pEventData
20206)
20207{
Jeff Johnson295189b2012-06-20 16:38:30 -070020208 eHalStatus halStatus;
20209 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020210 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020211 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20212 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20214
20215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020216 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020217 -------------------------------------------------------------------------*/
20218 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20219 ( NULL == pEventData->pEventData))
20220 {
20221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020225 }
20226
20227 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20228
20229 /*-------------------------------------------------------------------------
20230 Extract response and send it to UMAC
20231 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020232
20233 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20234 {
20235 wpalMemoryCopy( &halExitBmpsRsp,
20236 pEventData->pEventData,
20237 sizeof(halExitBmpsRsp));
20238
20239 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20240 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20241 }
20242 else
20243 {
20244 halStatus = *((eHalStatus*)pEventData->pEventData);
20245 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20246 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020247
20248 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020249 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20250 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20251 {
20252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020253 "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 -080020254 WDI_ASSERT(0);
20255 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20257
20258 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020259 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020260
Jeff Johnsone7245742012-09-05 17:12:55 -070020261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020262}/*WDI_ProcessExitBmpsRsp*/
20263
20264/**
20265 @brief Process Enter UAPSD Rsp function (called when a response
20266 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020267
20268 @param pWDICtx: pointer to the WLAN DAL context
20269 pEventData: pointer to the event information structure
20270
Jeff Johnson295189b2012-06-20 16:38:30 -070020271 @see
20272 @return Result of the function call
20273*/
20274WDI_Status
20275WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020276(
Jeff Johnson295189b2012-06-20 16:38:30 -070020277 WDI_ControlBlockType* pWDICtx,
20278 WDI_EventInfoType* pEventData
20279)
20280{
Jeff Johnson295189b2012-06-20 16:38:30 -070020281 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020282 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020283 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020284 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20285
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20287
20288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020290 -------------------------------------------------------------------------*/
20291 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20292 ( NULL == pEventData->pEventData))
20293 {
20294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020298 }
20299
20300 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20301
20302 /*-------------------------------------------------------------------------
20303 Extract response and send it to UMAC
20304 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020305 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20306 {
20307 wpalMemoryCopy( &halEnterUapsdRsp,
20308 pEventData->pEventData,
20309 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020310
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020311 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20312 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20313 }
20314 else
20315 {
20316 halStatus = *((eHalStatus*)pEventData->pEventData);
20317 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20318 }
20319
20320 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020321 {
20322 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20323 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20324 // the traffic to decide when to suspend the trigger frames when there is no traffic
20325 // activity on the trigger enabled ACs
20326 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20327
20328#ifdef WLAN_PERF
20329 // Increment the BD signature to refresh the fast path BD utilization
20330 pWDICtx->uBdSigSerialNum++;
20331#endif
20332 }
20333
20334 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020335 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020336
Jeff Johnsone7245742012-09-05 17:12:55 -070020337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020338}/*WDI_ProcessEnterUapsdRsp*/
20339
20340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020341 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020342 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020343
20344 @param pWDICtx: pointer to the WLAN DAL context
20345 pEventData: pointer to the event information structure
20346
Jeff Johnson295189b2012-06-20 16:38:30 -070020347 @see
20348 @return Result of the function call
20349*/
20350WDI_Status
20351WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020352(
Jeff Johnson295189b2012-06-20 16:38:30 -070020353 WDI_ControlBlockType* pWDICtx,
20354 WDI_EventInfoType* pEventData
20355)
20356{
Jeff Johnson295189b2012-06-20 16:38:30 -070020357 eHalStatus halStatus;
20358 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020359 tHalExitUapsdRspParams halExitUapsdRsp;
20360 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20362
20363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020365 -------------------------------------------------------------------------*/
20366 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20367 ( NULL == pEventData->pEventData))
20368 {
20369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020373 }
20374
20375 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20376
20377 /*-------------------------------------------------------------------------
20378 Extract response and send it to UMAC
20379 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020380 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20381 {
20382 wpalMemoryCopy( &halExitUapsdRsp,
20383 pEventData->pEventData,
20384 sizeof(halExitUapsdRsp));
20385
20386 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20387 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20388 }
20389 else
20390 {
20391 halStatus = *((eHalStatus*)pEventData->pEventData);
20392 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20393 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20395 // directly instead of the FW WQ.
20396 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20397
20398#ifdef WLAN_PERF
20399 // Increment the BD signature to refresh the fast path BD utilization
20400 pWDICtx->uBdSigSerialNum++;
20401#endif
20402
20403 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020404 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020405
Jeff Johnsone7245742012-09-05 17:12:55 -070020406 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020407}/*WDI_ProcessExitUapsdRsp*/
20408
20409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020410 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020411 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020412
20413 @param pWDICtx: pointer to the WLAN DAL context
20414 pEventData: pointer to the event information structure
20415
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 @see
20417 @return Result of the function call
20418*/
20419WDI_Status
20420WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020421(
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 WDI_ControlBlockType* pWDICtx,
20423 WDI_EventInfoType* pEventData
20424)
20425{
20426 WDI_Status wdiStatus;
20427 eHalStatus halStatus;
20428 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20430
20431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020433 -------------------------------------------------------------------------*/
20434 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20435 ( NULL == pEventData->pEventData))
20436 {
20437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020441 }
20442
20443 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20444
20445 /*-------------------------------------------------------------------------
20446 Extract response and send it to UMAC
20447 -------------------------------------------------------------------------*/
20448 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020449 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020450
20451 /*Notify UMAC*/
20452 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20453
Jeff Johnsone7245742012-09-05 17:12:55 -070020454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020455}/*WDI_ProcessSetUapsdAcParamsRsp*/
20456
20457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020459 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020460
20461 @param pWDICtx: pointer to the WLAN DAL context
20462 pEventData: pointer to the event information structure
20463
Jeff Johnson295189b2012-06-20 16:38:30 -070020464 @see
20465 @return Result of the function call
20466*/
20467WDI_Status
20468WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020469(
Jeff Johnson295189b2012-06-20 16:38:30 -070020470 WDI_ControlBlockType* pWDICtx,
20471 WDI_EventInfoType* pEventData
20472)
20473{
20474 WDI_Status wdiStatus;
20475 eHalStatus halStatus;
20476 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20478
20479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020480 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 -------------------------------------------------------------------------*/
20482 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20483 ( NULL == pEventData->pEventData))
20484 {
20485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020486 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020487 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 }
20490
20491 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20492
20493 /*-------------------------------------------------------------------------
20494 Extract response and send it to UMAC
20495 -------------------------------------------------------------------------*/
20496 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020497 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020498
20499 /*Notify UMAC*/
20500 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20501
Jeff Johnsone7245742012-09-05 17:12:55 -070020502 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020503}/*WDI_ProcessUpdateUapsdParamsRsp*/
20504
20505/**
20506 @brief Process Configure RXP filter Rsp function (called when a
20507 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020508
20509 @param pWDICtx: pointer to the WLAN DAL context
20510 pEventData: pointer to the event information structure
20511
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 @see
20513 @return Result of the function call
20514*/
20515WDI_Status
20516WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020517(
Jeff Johnson295189b2012-06-20 16:38:30 -070020518 WDI_ControlBlockType* pWDICtx,
20519 WDI_EventInfoType* pEventData
20520)
20521{
20522 WDI_Status wdiStatus;
20523 eHalStatus halStatus;
20524 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20525 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20526
20527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020528 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020529 -------------------------------------------------------------------------*/
20530 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20531 ( NULL == pEventData->pEventData))
20532 {
20533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 }
20538
20539 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20540
20541 /*-------------------------------------------------------------------------
20542 Extract response and send it to UMAC
20543 -------------------------------------------------------------------------*/
20544 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020546
20547 /*Notify UMAC*/
20548 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20549
Jeff Johnsone7245742012-09-05 17:12:55 -070020550 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020551}/*WDI_ProcessConfigureRxpFilterRsp*/
20552
20553/**
20554 @brief Process Set beacon filter Rsp function (called when a
20555 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020556
20557 @param pWDICtx: pointer to the WLAN DAL context
20558 pEventData: pointer to the event information structure
20559
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 @see
20561 @return Result of the function call
20562*/
20563WDI_Status
20564WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020565(
Jeff Johnson295189b2012-06-20 16:38:30 -070020566 WDI_ControlBlockType* pWDICtx,
20567 WDI_EventInfoType* pEventData
20568)
20569{
20570 WDI_Status wdiStatus;
20571 eHalStatus halStatus;
20572 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20574
20575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020577 -------------------------------------------------------------------------*/
20578 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20579 ( NULL == pEventData->pEventData))
20580 {
20581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020585 }
20586
20587 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20588
20589 /*-------------------------------------------------------------------------
20590 Extract response and send it to UMAC
20591 -------------------------------------------------------------------------*/
20592 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020593 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020594
20595 /*Notify UMAC*/
20596 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20597
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020599}/*WDI_ProcessSetBeaconFilterRsp*/
20600
20601/**
20602 @brief Process remove beacon filter Rsp function (called when a
20603 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020604
20605 @param pWDICtx: pointer to the WLAN DAL context
20606 pEventData: pointer to the event information structure
20607
Jeff Johnson295189b2012-06-20 16:38:30 -070020608 @see
20609 @return Result of the function call
20610*/
20611WDI_Status
20612WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020613(
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 WDI_ControlBlockType* pWDICtx,
20615 WDI_EventInfoType* pEventData
20616)
20617{
20618 WDI_Status wdiStatus;
20619 eHalStatus halStatus;
20620 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20622
20623 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020624 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020625 -------------------------------------------------------------------------*/
20626 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20627 ( NULL == pEventData->pEventData))
20628 {
20629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020630 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020633 }
20634
20635 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20636
20637 /*-------------------------------------------------------------------------
20638 Extract response and send it to UMAC
20639 -------------------------------------------------------------------------*/
20640 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020641 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020642
20643 /*Notify UMAC*/
20644 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20645
Jeff Johnsone7245742012-09-05 17:12:55 -070020646 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020647}/*WDI_ProcessRemBeaconFilterRsp*/
20648
20649/**
20650 @brief Process set RSSI thresholds Rsp function (called when a
20651 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020652
20653 @param pWDICtx: pointer to the WLAN DAL context
20654 pEventData: pointer to the event information structure
20655
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 @see
20657 @return Result of the function call
20658*/
20659WDI_Status
20660WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020661(
Jeff Johnson295189b2012-06-20 16:38:30 -070020662 WDI_ControlBlockType* pWDICtx,
20663 WDI_EventInfoType* pEventData
20664)
20665{
20666 WDI_Status wdiStatus;
20667 eHalStatus halStatus;
20668 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20670
20671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 -------------------------------------------------------------------------*/
20674 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20675 ( NULL == pEventData->pEventData))
20676 {
20677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020681 }
20682
20683 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20684
20685 /*-------------------------------------------------------------------------
20686 Extract response and send it to UMAC
20687 -------------------------------------------------------------------------*/
20688 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020690
20691 /*Notify UMAC*/
20692 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20693
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020695}/*WDI_ProcessSetRSSIThresoldsRsp*/
20696
20697/**
20698 @brief Process host offload Rsp function (called when a
20699 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020700
20701 @param pWDICtx: pointer to the WLAN DAL context
20702 pEventData: pointer to the event information structure
20703
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 @see
20705 @return Result of the function call
20706*/
20707WDI_Status
20708WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020709(
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 WDI_ControlBlockType* pWDICtx,
20711 WDI_EventInfoType* pEventData
20712)
20713{
20714 WDI_Status wdiStatus;
20715 eHalStatus halStatus;
20716 WDI_HostOffloadCb wdiHostOffloadCb;
20717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20718
20719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020720 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 -------------------------------------------------------------------------*/
20722 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20723 ( NULL == pEventData->pEventData))
20724 {
20725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020729 }
20730
20731 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20732
20733 /*-------------------------------------------------------------------------
20734 Extract response and send it to UMAC
20735 -------------------------------------------------------------------------*/
20736 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020738
20739 /*Notify UMAC*/
20740 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20741
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020743}/*WDI_ProcessHostOffloadRsp*/
20744
20745/**
20746 @brief Process keep alive Rsp function (called when a
20747 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020748
20749 @param pWDICtx: pointer to the WLAN DAL context
20750 pEventData: pointer to the event information structure
20751
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 @see
20753 @return Result of the function call
20754*/
20755WDI_Status
20756WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020757(
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 WDI_ControlBlockType* pWDICtx,
20759 WDI_EventInfoType* pEventData
20760)
20761{
20762 WDI_Status wdiStatus;
20763 eHalStatus halStatus;
20764 WDI_KeepAliveCb wdiKeepAliveCb;
20765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053020766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20768
20769
20770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020772 -------------------------------------------------------------------------*/
20773 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20774 ( NULL == pEventData->pEventData))
20775 {
20776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020777 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020780 }
20781
Jeff Johnsone7245742012-09-05 17:12:55 -070020782 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20783
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 /*-------------------------------------------------------------------------
20785 Extract response and send it to UMAC
20786 -------------------------------------------------------------------------*/
20787 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020789
20790 /*Notify UMAC*/
20791 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20792
Jeff Johnsone7245742012-09-05 17:12:55 -070020793 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020794}/*WDI_ProcessKeepAliveRsp*/
20795
20796/**
20797 @brief Process wowl add ptrn Rsp function (called when a
20798 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020799
20800 @param pWDICtx: pointer to the WLAN DAL context
20801 pEventData: pointer to the event information structure
20802
Jeff Johnson295189b2012-06-20 16:38:30 -070020803 @see
20804 @return Result of the function call
20805*/
20806WDI_Status
20807WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020808(
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 WDI_ControlBlockType* pWDICtx,
20810 WDI_EventInfoType* pEventData
20811)
20812{
Jeff Johnson295189b2012-06-20 16:38:30 -070020813 eHalStatus halStatus;
20814 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020815 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20816 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20817
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20819
20820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 -------------------------------------------------------------------------*/
20823 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20824 ( NULL == pEventData->pEventData))
20825 {
20826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020827 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 }
20831
20832 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20833
20834 /*-------------------------------------------------------------------------
20835 Extract response and send it to UMAC
20836 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020837 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20838 {
20839 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20840 pEventData->pEventData,
20841 sizeof(halAddWowlBcastPtrRsp));
20842
20843 wdiWowlAddBcPtrRsp.wdiStatus =
20844 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20845 }
20846 else
20847 {
20848 halStatus = *((eHalStatus*)pEventData->pEventData);
20849 wdiWowlAddBcPtrRsp.wdiStatus =
20850 WDI_HAL_2_WDI_STATUS(halStatus);
20851 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020852
20853 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020854 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020855
Jeff Johnsone7245742012-09-05 17:12:55 -070020856 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020857}/*WDI_ProcessWowlAddBcPtrnRsp*/
20858
20859/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020862
20863 @param pWDICtx: pointer to the WLAN DAL context
20864 pEventData: pointer to the event information structure
20865
Jeff Johnson295189b2012-06-20 16:38:30 -070020866 @see
20867 @return Result of the function call
20868*/
20869WDI_Status
20870WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020871(
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 WDI_ControlBlockType* pWDICtx,
20873 WDI_EventInfoType* pEventData
20874)
20875{
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 eHalStatus halStatus;
20877 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020878 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20879 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20881
20882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 -------------------------------------------------------------------------*/
20885 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20886 ( NULL == pEventData->pEventData))
20887 {
20888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 }
20893
20894 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20895
20896 /*-------------------------------------------------------------------------
20897 Extract response and send it to UMAC
20898 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020899 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20900 {
20901 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20902 pEventData->pEventData,
20903 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020904
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020905 wdiWowlDelBcstPtrRsp.wdiStatus =
20906 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20907 }
20908 else
20909 {
20910 halStatus = *((eHalStatus*)pEventData->pEventData);
20911 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20912 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020914 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020915
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020917}/*WDI_ProcessWowlDelBcPtrnRsp*/
20918
20919/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020922
20923 @param pWDICtx: pointer to the WLAN DAL context
20924 pEventData: pointer to the event information structure
20925
Jeff Johnson295189b2012-06-20 16:38:30 -070020926 @see
20927 @return Result of the function call
20928*/
20929WDI_Status
20930WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020931(
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 WDI_ControlBlockType* pWDICtx,
20933 WDI_EventInfoType* pEventData
20934)
20935{
Jeff Johnson295189b2012-06-20 16:38:30 -070020936 eHalStatus halStatus;
20937 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020938 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20939 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20941
20942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 -------------------------------------------------------------------------*/
20945 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20946 ( NULL == pEventData->pEventData))
20947 {
20948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020949 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 }
20953
20954 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20955
20956 /*-------------------------------------------------------------------------
20957 Extract response and send it to UMAC
20958 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020959 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20960 {
20961 wpalMemoryCopy( &halEnterWowlRspParams,
20962 (wpt_uint8*)pEventData->pEventData,
20963 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020964
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020965 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20966 wdiwowlEnterRsp.status =
20967 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20968 }
20969 else
20970 {
20971 halStatus = *((eHalStatus*)pEventData->pEventData);
20972 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20973 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020974 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020975 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020976
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020978}/*WDI_ProcessWowlEnterRsp*/
20979
20980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020981 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020982 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020983
20984 @param pWDICtx: pointer to the WLAN DAL context
20985 pEventData: pointer to the event information structure
20986
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 @see
20988 @return Result of the function call
20989*/
20990WDI_Status
20991WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020992(
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 WDI_ControlBlockType* pWDICtx,
20994 WDI_EventInfoType* pEventData
20995)
20996{
Jeff Johnson295189b2012-06-20 16:38:30 -070020997 eHalStatus halStatus;
20998 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020999 tHalExitWowlRspParams halExitWowlRspParams;
21000 WDI_WowlExitRspParamsType wdiWowlExitRsp;
21001
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21003
21004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021006 -------------------------------------------------------------------------*/
21007 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21008 ( NULL == pEventData->pEventData))
21009 {
21010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 }
21015
21016 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
21017
21018 /*-------------------------------------------------------------------------
21019 Extract response and send it to UMAC
21020 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021021 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21022 {
21023 wpalMemoryCopy( &halExitWowlRspParams,
21024 pEventData->pEventData,
21025 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021026
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021027 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
21028 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
21029
21030 }
21031 else
21032 {
21033 halStatus = *((eHalStatus*)pEventData->pEventData);
21034 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21035 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021036 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021037 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021038
Jeff Johnsone7245742012-09-05 17:12:55 -070021039 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021040}/*WDI_ProcessWowlExitRsp*/
21041
21042/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021043 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 (called when a response is being received over the bus
21045 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021046
21047 @param pWDICtx: pointer to the WLAN DAL context
21048 pEventData: pointer to the event information structure
21049
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 @see
21051 @return Result of the function call
21052*/
21053WDI_Status
21054WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021055(
Jeff Johnson295189b2012-06-20 16:38:30 -070021056 WDI_ControlBlockType* pWDICtx,
21057 WDI_EventInfoType* pEventData
21058)
21059{
21060 WDI_Status wdiStatus;
21061 eHalStatus halStatus;
21062 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21064
21065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 -------------------------------------------------------------------------*/
21068 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21069 ( NULL == pEventData->pEventData))
21070 {
21071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021075 }
21076
21077 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21078
21079 /*-------------------------------------------------------------------------
21080 Extract response and send it to UMAC
21081 -------------------------------------------------------------------------*/
21082 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021083 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021084
21085 /*Notify UMAC*/
21086 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21087
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021089}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21090
21091
21092/**
21093 @brief Process Nv download(called when a response
21094 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021095
21096 @param pWDICtx: pointer to the WLAN DAL context
21097 pEventData: pointer to the event information structure
21098
Jeff Johnson295189b2012-06-20 16:38:30 -070021099 @see
21100 @return Result of the function call
21101*/
21102WDI_Status
21103WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021104(
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 WDI_ControlBlockType* pWDICtx,
21106 WDI_EventInfoType* pEventData
21107)
21108{
21109
21110 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21111 tHalNvImgDownloadRspParams halNvDownloadRsp;
21112 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21113
21114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 -------------------------------------------------------------------------*/
21117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21118 ( NULL == pEventData->pEventData))
21119 {
21120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 }
21125
21126 /*-------------------------------------------------------------------------
21127 Extract response and send it to UMAC
21128 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021129 wpalMemoryCopy( &halNvDownloadRsp,
21130 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 sizeof(halNvDownloadRsp));
21132
21133 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21134
21135 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21137 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 {
21139 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021140 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 }
21142 else
21143 {
21144 /*Reset the Nv related global information in WDI context information */
21145 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21146 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21147 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21148 /*call WDA callback function for last fragment */
21149 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21150 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21151 }
21152
Jeff Johnsone7245742012-09-05 17:12:55 -070021153 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021154}
21155#ifdef WLAN_FEATURE_VOWIFI_11R
21156/**
21157 @brief Process Add TSpec Rsp function (called when a response
21158 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021159
21160 @param pWDICtx: pointer to the WLAN DAL context
21161 pEventData: pointer to the event information structure
21162
Jeff Johnson295189b2012-06-20 16:38:30 -070021163 @see
21164 @return Result of the function call
21165*/
21166WDI_Status
21167WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021168(
Jeff Johnson295189b2012-06-20 16:38:30 -070021169 WDI_ControlBlockType* pWDICtx,
21170 WDI_EventInfoType* pEventData
21171)
21172{
21173 WDI_Status wdiStatus;
21174 tAggrAddTsRspParams aggrAddTsRsp;
21175 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21177
21178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021179 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021180 -------------------------------------------------------------------------*/
21181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21182 ( NULL == pEventData->pEventData))
21183 {
21184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 }
21189
21190 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21191
21192 /*-------------------------------------------------------------------------
21193 Extract response and send it to UMAC
21194 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021195 wpalMemoryCopy( &aggrAddTsRsp,
21196 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 sizeof(aggrAddTsRsp));
21198
21199 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021200 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021201
21202 /*Notify UMAC*/
21203 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21204
Jeff Johnsone7245742012-09-05 17:12:55 -070021205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021206}/*WDI_ProcessAddTSpecRsp*/
21207#endif /* WLAN_FEATURE_VOWIFI_11R */
21208
21209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021210 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021212
21213 @param pWDICtx: pointer to the WLAN DAL context
21214 pEventData: pointer to the event information structure
21215
Jeff Johnson295189b2012-06-20 16:38:30 -070021216 @see
21217 @return Result of the function call
21218*/
21219WDI_Status
21220WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021221(
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 WDI_ControlBlockType* pWDICtx,
21223 WDI_EventInfoType* pEventData
21224)
21225{
21226 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21227 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21228 tHalHostResumeRspParams hostResumeRspMsg;
21229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21230
21231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021232 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021233 -------------------------------------------------------------------------*/
21234 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21235 ( NULL == pEventData->pEventData))
21236 {
21237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021238 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 }
21242
21243 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21244
21245 /*-------------------------------------------------------------------------
21246 Extract response and send it to UMAC
21247 -------------------------------------------------------------------------*/
21248
Jeff Johnsone7245742012-09-05 17:12:55 -070021249 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 (wpt_uint8*)pEventData->pEventData,
21251 sizeof(hostResumeRspMsg));
21252
Jeff Johnsone7245742012-09-05 17:12:55 -070021253 wdiResumeRspParams.wdiStatus =
21254 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021255
21256 /*Notify UMAC*/
21257 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21258
21259 return WDI_STATUS_SUCCESS;
21260}
21261
21262/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021263 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021265
21266 @param pWDICtx: pointer to the WLAN DAL context
21267 pEventData: pointer to the event information structure
21268
Jeff Johnson295189b2012-06-20 16:38:30 -070021269 @see
21270 @return Result of the function call
21271*/
21272WDI_Status
21273WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021274(
Jeff Johnson295189b2012-06-20 16:38:30 -070021275 WDI_ControlBlockType* pWDICtx,
21276 WDI_EventInfoType* pEventData
21277)
21278{
21279 WDI_Status wdiStatus;
21280 eHalStatus halStatus;
21281 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21283
21284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021286 -------------------------------------------------------------------------*/
21287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21288 ( NULL == pEventData->pEventData))
21289 {
21290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021294 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021295
21296 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021297
21298 /*-------------------------------------------------------------------------
21299 Extract response and send it to UMAC
21300 -------------------------------------------------------------------------*/
21301 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021302 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021303
21304 /*Notify UMAC*/
21305 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21306
Jeff Johnsone7245742012-09-05 17:12:55 -070021307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021308}/*WDI_ProcessSetTxPerTrackingRsp*/
21309
21310/*==========================================================================
21311 Indications from HAL
21312 ==========================================================================*/
21313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 indication of this kind is being received over the bus
21316 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021317
21318 @param pWDICtx: pointer to the WLAN DAL context
21319 pEventData: pointer to the event information structure
21320
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 @see
21322 @return Result of the function call
21323*/
21324WDI_Status
21325WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021326(
Jeff Johnson295189b2012-06-20 16:38:30 -070021327 WDI_ControlBlockType* pWDICtx,
21328 WDI_EventInfoType* pEventData
21329)
21330{
21331 WDI_LowLevelIndType wdiInd;
21332 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21334
21335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021336 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 -------------------------------------------------------------------------*/
21338 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21339 ( NULL == pEventData->pEventData))
21340 {
21341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021343 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021345 }
21346
21347 /*-------------------------------------------------------------------------
21348 Extract indication and send it to UMAC
21349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21351 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 sizeof(tHalRSSINotification));
21353
21354 /*Fill in the indication parameters*/
21355 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21356 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21357 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21358 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21359 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21360 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21361 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21362 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21363 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21364 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21365 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21366 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21367 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021368 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21369 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021370
ltimariub77f24b2013-01-24 18:54:33 -080021371 if ( pWDICtx->wdiLowLevelIndCB )
21372 {
21373 /*Notify UMAC of indication*/
21374 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21375 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021376
21377 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021378}/*WDI_ProcessLowRSSIInd*/
21379
21380
21381/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021382 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021383 an indication of this kind is being received over the
21384 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021385
21386 @param pWDICtx: pointer to the WLAN DAL context
21387 pEventData: pointer to the event information structure
21388
Jeff Johnson295189b2012-06-20 16:38:30 -070021389 @see
21390 @return Result of the function call
21391*/
21392WDI_Status
21393WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021394(
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 WDI_ControlBlockType* pWDICtx,
21396 WDI_EventInfoType* pEventData
21397)
21398{
21399 WDI_Status wdiStatus;
21400 eHalStatus halStatus;
21401 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021402 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21404
21405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021406 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021407 -------------------------------------------------------------------------*/
21408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21409 ( NULL == pEventData->pEventData))
21410 {
21411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021415 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021416 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021417 /*-------------------------------------------------------------------------
21418 Extract indication and send it to UMAC
21419 -------------------------------------------------------------------------*/
21420 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21421 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021422 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021423
21424 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021425 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021426 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21427 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021428 if ( pWDICtx->wdiLowLevelIndCB )
21429 {
21430 /*Notify UMAC*/
21431 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21432 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021433
21434 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021435}/*WDI_ProcessMissedBeaconInd*/
21436
21437
21438/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021439 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021440 an indication of this kind is being received over the
21441 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021442
21443 @param pWDICtx: pointer to the WLAN DAL context
21444 pEventData: pointer to the event information structure
21445
Jeff Johnson295189b2012-06-20 16:38:30 -070021446 @see
21447 @return Result of the function call
21448*/
21449WDI_Status
21450WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021451(
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 WDI_ControlBlockType* pWDICtx,
21453 WDI_EventInfoType* pEventData
21454)
21455{
21456 WDI_Status wdiStatus;
21457 eHalStatus halStatus;
21458 WDI_LowLevelIndType wdiInd;
21459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21460
21461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021463 -------------------------------------------------------------------------*/
21464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21465 ( NULL == pEventData->pEventData))
21466 {
21467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021471 }
21472
21473 /*-------------------------------------------------------------------------
21474 Extract indication and send it to UMAC
21475 -------------------------------------------------------------------------*/
21476 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21477 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021478 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021479
21480 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021481 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 /* ! TO DO - fill in from HAL struct:
21483 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21484
ltimariub77f24b2013-01-24 18:54:33 -080021485 if ( pWDICtx->wdiLowLevelIndCB )
21486 {
21487 /*Notify UMAC*/
21488 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21489 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021490
21491 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021492}/*WDI_ProcessUnkAddrFrameInd*/
21493
21494
21495/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021496 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 indication of this kind is being received over the bus
21498 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021499
21500 @param pWDICtx: pointer to the WLAN DAL context
21501 pEventData: pointer to the event information structure
21502
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 @see
21504 @return Result of the function call
21505*/
21506WDI_Status
21507WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021508(
Jeff Johnson295189b2012-06-20 16:38:30 -070021509 WDI_ControlBlockType* pWDICtx,
21510 WDI_EventInfoType* pEventData
21511)
21512{
21513 WDI_LowLevelIndType wdiInd;
21514 tpSirMicFailureInd pHalMicFailureInd;
21515
21516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21517
21518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021520 -------------------------------------------------------------------------*/
21521 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21522 ( NULL == pEventData->pEventData))
21523 {
21524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021529
Jeff Johnson295189b2012-06-20 16:38:30 -070021530 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21531 /*-------------------------------------------------------------------------
21532 Extract indication and send it to UMAC
21533 -------------------------------------------------------------------------*/
21534
21535 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21538 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21539 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21540 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21541 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21542 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21543 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21544 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021547 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021548 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021549 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021550 pHalMicFailureInd->info.keyId;
21551 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21552 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21553 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21554 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021555
21556 if ( pWDICtx->wdiLowLevelIndCB )
21557 {
21558 /*Notify UMAC*/
21559 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21560 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021561
21562 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021563}/*WDI_ProcessMicFailureInd*/
21564
21565
21566/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021568 an indication of this kind is being received over the
21569 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021570
21571 @param pWDICtx: pointer to the WLAN DAL context
21572 pEventData: pointer to the event information structure
21573
Jeff Johnson295189b2012-06-20 16:38:30 -070021574 @see
21575 @return Result of the function call
21576*/
21577WDI_Status
21578WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021579(
Jeff Johnson295189b2012-06-20 16:38:30 -070021580 WDI_ControlBlockType* pWDICtx,
21581 WDI_EventInfoType* pEventData
21582)
21583{
21584 WDI_Status wdiStatus;
21585 eHalStatus halStatus;
21586 WDI_LowLevelIndType wdiInd;
21587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21588
21589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021590 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 -------------------------------------------------------------------------*/
21592 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21593 ( NULL == pEventData->pEventData))
21594 {
21595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021599 }
21600
21601 /*-------------------------------------------------------------------------
21602 Extract indication and send it to UMAC
21603 -------------------------------------------------------------------------*/
21604
21605 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21606 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021608
21609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21610 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021611
Jeff Johnson295189b2012-06-20 16:38:30 -070021612 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021613 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21614 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021615
ltimariub77f24b2013-01-24 18:54:33 -080021616 if ( pWDICtx->wdiLowLevelIndCB )
21617 {
21618 /*Notify UMAC*/
21619 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21620 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021621
21622 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021623}/*WDI_ProcessFatalErrorInd*/
21624
21625/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021626 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021627 an indication of this kind is being received over the
21628 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021629
21630 @param pWDICtx: pointer to the WLAN DAL context
21631 pEventData: pointer to the event information structure
21632
Jeff Johnson295189b2012-06-20 16:38:30 -070021633 @see
21634 @return Result of the function call
21635*/
21636WDI_Status
21637WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021638(
Jeff Johnson295189b2012-06-20 16:38:30 -070021639 WDI_ControlBlockType* pWDICtx,
21640 WDI_EventInfoType* pEventData
21641)
21642{
21643 tDeleteStaContextParams halDelSTACtx;
21644 WDI_LowLevelIndType wdiInd;
21645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21646
21647 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021648 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021649 -------------------------------------------------------------------------*/
21650 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21651 ( NULL == pEventData->pEventData))
21652 {
21653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021654 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 }
21658
21659 /*-------------------------------------------------------------------------
21660 Extract indication and send it to UMAC
21661 -------------------------------------------------------------------------*/
21662
21663 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021664 wpalMemoryCopy( &halDelSTACtx,
21665 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 sizeof(halDelSTACtx));
21667
21668 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021669 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021670
21671 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21672 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21673 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21674 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21675
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021677 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21681 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021682
ltimariub77f24b2013-01-24 18:54:33 -080021683 if ( pWDICtx->wdiLowLevelIndCB )
21684 {
21685 /*Notify UMAC*/
21686 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21687 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021688
21689 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021690}/*WDI_ProcessDelSTAInd*/
21691
21692/**
21693*@brief Process Coex Indication function (called when
21694 an indication of this kind is being received over the
21695 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021696
21697 @param pWDICtx: pointer to the WLAN DAL context
21698 pEventData: pointer to the event information structure
21699
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 @see
21701 @return Result of the function call
21702*/
21703WDI_Status
21704WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021705(
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 WDI_ControlBlockType* pWDICtx,
21707 WDI_EventInfoType* pEventData
21708)
21709{
21710 WDI_LowLevelIndType wdiInd;
21711 tCoexIndMsg halCoexIndMsg;
21712 wpt_uint32 index;
21713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21714
21715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021716 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021717 -------------------------------------------------------------------------*/
21718 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21719 ( NULL == pEventData->pEventData ))
21720 {
21721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 }
21726
21727 /*-------------------------------------------------------------------------
21728 Extract indication and send it to UMAC
21729 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021730 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21731 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021732 sizeof(halCoexIndMsg.coexIndParams) );
21733
21734 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021735 wdiInd.wdiIndicationType = WDI_COEX_IND;
21736 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21738 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021739 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021740 }
21741
21742 // DEBUG
21743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21744 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021745 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21746 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21747 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21748 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21749 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021750
ltimariub77f24b2013-01-24 18:54:33 -080021751 if ( pWDICtx->wdiLowLevelIndCB )
21752 {
21753 /*Notify UMAC*/
21754 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21755 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021756
21757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021758}/*WDI_ProcessCoexInd*/
21759
21760/**
21761*@brief Process Tx Complete Indication function (called when
21762 an indication of this kind is being received over the
21763 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021764
21765 @param pWDICtx: pointer to the WLAN DAL context
21766 pEventData: pointer to the event information structure
21767
Jeff Johnson295189b2012-06-20 16:38:30 -070021768 @see
21769 @return Result of the function call
21770*/
21771WDI_Status
21772WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021773(
Jeff Johnson295189b2012-06-20 16:38:30 -070021774 WDI_ControlBlockType* pWDICtx,
21775 WDI_EventInfoType* pEventData
21776)
21777{
21778 WDI_LowLevelIndType wdiInd;
21779 tTxComplIndMsg halTxComplIndMsg;
21780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21781
21782 /*-------------------------------------------------------------------------
21783 Sanity check
21784 -------------------------------------------------------------------------*/
21785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21786 ( NULL == pEventData->pEventData ))
21787 {
21788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 WDI_ASSERT( 0 );
21791 return WDI_STATUS_E_FAILURE;
21792 }
21793
21794 /*-------------------------------------------------------------------------
21795 Extract indication and send it to UMAC
21796 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021797 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21798 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 sizeof(halTxComplIndMsg.txComplParams) );
21800
21801 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021803
21804 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21805 &halTxComplIndMsg.txComplParams,
21806 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021807
ltimariub77f24b2013-01-24 18:54:33 -080021808 if ( pWDICtx->wdiLowLevelIndCB )
21809 {
21810 /*Notify UMAC*/
21811 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21812 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021813
21814 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021815}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021816#ifdef FEATURE_WLAN_TDLS
21817/**
21818*@brief Process TDLS Indication function (called when
21819 an indication of this kind is being received over the
21820 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021821
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021822 @param pWDICtx: pointer to the WLAN DAL context
21823 pEventData: pointer to the event information structure
21824
21825 @see
21826 @return Result of the function call
21827*/
21828WDI_Status
21829WDI_ProcessTdlsInd
21830(
21831 WDI_ControlBlockType* pWDICtx,
21832 WDI_EventInfoType* pEventData
21833)
21834{
21835 WDI_LowLevelIndType wdiInd;
21836 tTdlsIndMsg halTdlsIndMsg;
21837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21838
21839 /*-------------------------------------------------------------------------
21840 Sanity check
21841 -------------------------------------------------------------------------*/
21842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21843 ( NULL == pEventData->pEventData ))
21844 {
21845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21846 "%s: Invalid parameters", __func__);
21847 WDI_ASSERT( 0 );
21848 return WDI_STATUS_E_FAILURE;
21849 }
21850
21851 /*-------------------------------------------------------------------------
21852 Extract indication and send it to UMAC
21853 -------------------------------------------------------------------------*/
21854 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21855 pEventData->pEventData,
21856 sizeof(halTdlsIndMsg.tdlsIndParams) );
21857
21858 /*Fill in the indication parameters*/
21859 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21860
21861 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21862 = halTdlsIndMsg.tdlsIndParams.status;
21863
21864 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21865 = halTdlsIndMsg.tdlsIndParams.staIdx;
21866
21867 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21868 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21869
Atul Mittalbb2aad02014-09-22 19:09:36 +053021870 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21871 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021872 /*Notify UMAC*/
21873 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21874
21875 return WDI_STATUS_SUCCESS;
21876}/*WDI_ProcessTdlsInd*/
21877#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021878/**
Viral Modid86bde22012-12-10 13:09:21 -080021879*@brief Process Noa Start Indication function (called when
21880 an indication of this kind is being received over the
21881 bus from HAL)
21882
21883 @param pWDICtx: pointer to the WLAN DAL context
21884 pEventData: pointer to the event information structure
21885
21886 @see
21887 @return Result of the function call
21888*/
21889WDI_Status
21890WDI_ProcessP2pNoaStartInd
21891(
21892 WDI_ControlBlockType* pWDICtx,
21893 WDI_EventInfoType* pEventData
21894)
21895{
21896 WDI_LowLevelIndType wdiInd;
21897 tNoaStartIndMsg halNoaStartIndMsg;
21898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21899
21900 /*-------------------------------------------------------------------------
21901 Sanity check
21902 -------------------------------------------------------------------------*/
21903 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21904 ( NULL == pEventData->pEventData ))
21905 {
21906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21907 "%s: Invalid parameters", __func__);
21908 WDI_ASSERT( 0 );
21909 return WDI_STATUS_E_FAILURE;
21910 }
21911
21912 /*-------------------------------------------------------------------------
21913 Extract indication and send it to UMAC
21914 -------------------------------------------------------------------------*/
21915 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21916 pEventData->pEventData,
21917 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21918
21919 /*Fill in the indication parameters*/
21920 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21921
21922 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21923 = halNoaStartIndMsg.noaStartIndParams.status;
21924
21925 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21926 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21927
21928 /*Notify UMAC*/
21929 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21930
21931 return WDI_STATUS_SUCCESS;
21932}/*WDI_ProcessNoaAttrInd*/
21933
21934/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021935*@brief Process Noa Attr Indication function (called when
21936 an indication of this kind is being received over the
21937 bus from HAL)
21938
21939 @param pWDICtx: pointer to the WLAN DAL context
21940 pEventData: pointer to the event information structure
21941
21942 @see
21943 @return Result of the function call
21944*/
21945WDI_Status
21946WDI_ProcessP2pNoaAttrInd
21947(
21948 WDI_ControlBlockType* pWDICtx,
21949 WDI_EventInfoType* pEventData
21950)
21951{
21952 WDI_LowLevelIndType wdiInd;
21953 tNoaAttrIndMsg halNoaAttrIndMsg;
21954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21955
21956 /*-------------------------------------------------------------------------
21957 Sanity check
21958 -------------------------------------------------------------------------*/
21959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21960 ( NULL == pEventData->pEventData ))
21961 {
21962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021964 WDI_ASSERT( 0 );
21965 return WDI_STATUS_E_FAILURE;
21966 }
21967
21968 /*-------------------------------------------------------------------------
21969 Extract indication and send it to UMAC
21970 -------------------------------------------------------------------------*/
21971 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21972 pEventData->pEventData,
21973 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21974
21975 /*Fill in the indication parameters*/
21976 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021977
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21979 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021980
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21982 = halNoaAttrIndMsg.noaAttrIndParams.index;
21983 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21984 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21985 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21986 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021987
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21989 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21990 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21991 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21992 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21993 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21994 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21995 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021996
Jeff Johnson295189b2012-06-20 16:38:30 -070021997 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21998 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21999 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
22000 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
22001 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
22002 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
22003 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
22004 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
22005
ltimariub77f24b2013-01-24 18:54:33 -080022006 if ( pWDICtx->wdiLowLevelIndCB )
22007 {
22008 /*Notify UMAC*/
22009 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22010 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022011
22012 return WDI_STATUS_SUCCESS;
22013}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022014
22015/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022016 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022017 an indication of this kind is being received over the
22018 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022019
22020 @param pWDICtx: pointer to the WLAN DAL context
22021 pEventData: pointer to the event information structure
22022
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 @see
22024 @return Result of the function call
22025*/
22026WDI_Status
22027WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022028(
Jeff Johnson295189b2012-06-20 16:38:30 -070022029 WDI_ControlBlockType* pWDICtx,
22030 WDI_EventInfoType* pEventData
22031)
22032{
22033 WDI_LowLevelIndType wdiInd;
22034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022035
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 /*-------------------------------------------------------------------------
22037 Extract indication and send it to UMAC
22038 -------------------------------------------------------------------------*/
22039 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
22041
ltimariub77f24b2013-01-24 18:54:33 -080022042 if ( pWDICtx->wdiLowLevelIndCB )
22043 {
22044 /*Notify UMAC*/
22045 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22046 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022047
Jeff Johnsone7245742012-09-05 17:12:55 -070022048 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022049}/*WDI_ProcessTxPerHitInd*/
22050
Jeff Johnson295189b2012-06-20 16:38:30 -070022051/**
Yue Mab9c86f42013-08-14 15:59:08 -070022052 @brief Process Periodic Tx Pattern Fw Indication function
22053
22054 @param pWDICtx: pointer to the WLAN DAL context
22055 pEventData: pointer to the event information structure
22056
22057 @see
22058 @return Result of the function call
22059*/
22060WDI_Status
22061WDI_ProcessPeriodicTxPtrnFwInd
22062(
22063 WDI_ControlBlockType* pWDICtx,
22064 WDI_EventInfoType* pEventData
22065)
22066{
22067 WDI_LowLevelIndType wdiInd;
22068
22069 /*-------------------------------------------------------------------------
22070 Sanity check
22071 -------------------------------------------------------------------------*/
22072 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22073 (NULL == pEventData->pEventData))
22074 {
22075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22076 "%s: Invalid parameters", __func__);
22077 WDI_ASSERT(0);
22078 return WDI_STATUS_E_FAILURE;
22079 }
22080
22081 /*-------------------------------------------------------------------------
22082 Extract indication and send it to UMAC
22083 -------------------------------------------------------------------------*/
22084 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22085 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22086 sizeof(tHalPeriodicTxPtrnFwInd));
22087
22088 if (pWDICtx->wdiLowLevelIndCB)
22089 {
22090 /*Notify UMAC*/
22091 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22092 }
22093
22094 return WDI_STATUS_SUCCESS;
22095}
22096
22097/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022098 @brief WDI_ProcessFTMCommandReq
22099 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022100
22101 @param pWDICtx: pointer to the WLAN DAL context
22102 pEventData: pointer to the event information structure
22103
Jeff Johnson295189b2012-06-20 16:38:30 -070022104 @see
22105 @return Result of the function call
22106*/
22107WDI_Status
22108WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022109(
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 WDI_ControlBlockType* pWDICtx,
22111 WDI_EventInfoType* pEventData
22112)
22113{
22114 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22115 wpt_uint8 *ftmCommandBuffer = NULL;
22116 wpt_uint16 dataOffset;
22117 wpt_uint16 bufferSize;
22118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 -------------------------------------------------------------------------*/
22121 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22122 ( NULL == pEventData->pEventData))
22123
22124 {
22125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 }
22130
22131 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22132
22133 /* Get MSG Buffer */
22134 WDI_GetMessageBuffer(pWDICtx,
22135 WDI_FTM_CMD_REQ,
22136 ftmCommandReq->bodyLength,
22137 &ftmCommandBuffer,
22138 &dataOffset,
22139 &bufferSize);
22140
22141 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22142 ftmCommandReq->FTMCommandBody,
22143 ftmCommandReq->bodyLength);
22144
22145 /* Send MSG */
22146 return WDI_SendMsg(pWDICtx,
22147 ftmCommandBuffer,
22148 bufferSize,
22149 pEventData->pCBfnc,
22150 pEventData->pUserData,
22151 WDI_FTM_CMD_RESP);
22152}
22153
22154/**
22155 @brief WDI_ProcessFTMCommandRsp
22156 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022157
22158 @param pWDICtx: pointer to the WLAN DAL context
22159 pEventData: pointer to the event information structure
22160
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 @see
22162 @return Result of the function call
22163*/
22164WDI_Status
22165WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022166(
Jeff Johnson295189b2012-06-20 16:38:30 -070022167 WDI_ControlBlockType* pWDICtx,
22168 WDI_EventInfoType* pEventData
22169)
22170{
22171 WDI_FTMCommandRspCb ftmCMDRspCb;
22172 tProcessPttRspParams *ftmCMDRspData = NULL;
22173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22174
22175 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022176 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022177 -------------------------------------------------------------------------*/
22178 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22179 ( NULL == pEventData->pEventData))
22180 {
22181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022182 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 }
22186
22187 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22188
22189 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22190
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22192 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022193 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22194
22195 /*Notify UMAC*/
22196 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22197
Jeff Johnsone7245742012-09-05 17:12:55 -070022198 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022199}
Jeff Johnson295189b2012-06-20 16:38:30 -070022200/**
22201 @brief WDI_ProcessHalDumpCmdReq
22202 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022203
22204 @param pWDICtx: pointer to the WLAN DAL context
22205 pEventData: pointer to the event information structure
22206
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 @see
22208 @return Result of the function call
22209*/
22210WDI_Status
22211WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022212(
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 WDI_ControlBlockType* pWDICtx,
22214 WDI_EventInfoType* pEventData
22215)
22216{
22217 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22218 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22219 wpt_uint16 usDataOffset = 0;
22220 wpt_uint16 usSendSize = 0;
22221 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022222 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022223
22224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022225 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022226 -------------------------------------------------------------------------*/
22227 if (( NULL == pEventData ) ||
22228 ( NULL == pEventData->pEventData) ||
22229 ( NULL == pEventData->pCBfnc ))
22230 {
22231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022235 }
22236
22237 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
22238 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
22239
22240 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070022243 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022244 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022245 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022246 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070022247 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022248 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070022251
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 /*-----------------------------------------------------------------------
22253 Get message buffer
22254 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
22257 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022258 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
22260 {
22261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022262 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022263 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
22264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022266 }
22267
Jeff Johnsone7245742012-09-05 17:12:55 -070022268 wpalMemoryCopy( pSendBuffer+usDataOffset,
22269 &halDumpCmdReqMsg.dumpCmdReqParams,
22270 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022271
22272 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022274
22275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022276 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22279 wdiHALDumpCmdRspCb, pEventData->pUserData,
22280 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022281}
22282
22283/**
22284 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 Process hal Dump Command Response from HAL, simply route to HDD
22286
22287 @param pWDICtx: pointer to the WLAN DAL context
22288 pEventData: pointer to the event information structure
22289
Jeff Johnson295189b2012-06-20 16:38:30 -070022290 @see
22291 @return Result of the function call
22292*/
22293WDI_Status
22294WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022295(
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 WDI_ControlBlockType* pWDICtx,
22297 WDI_EventInfoType* pEventData
22298)
22299{
22300 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022301 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022302 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22303
22304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022306 -------------------------------------------------------------------------*/
22307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22308 ( NULL == pEventData->pEventData))
22309 {
22310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 }
22315
Jeff Johnsone7245742012-09-05 17:12:55 -070022316 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022317
22318 /*Initialize the WDI Response structure */
22319 wdiHALDumpCmdRsp.usBufferLen = 0;
22320 wdiHALDumpCmdRsp.pBuffer = NULL;
22321
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022322 wpalMemoryCopy( &halDumpCmdRspParams,
22323 pEventData->pEventData,
22324 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022325
22326 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022327 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022328
22329 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022330 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022331 {
22332 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022333 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22334 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22335
22336 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22337 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022338 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022340
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 /*Notify UMAC*/
22342 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22343
22344 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22345 {
22346 /* Free the allocated buffer */
22347 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22348 }
22349 return WDI_STATUS_SUCCESS;
22350}
22351
22352/*==========================================================================
22353 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022354
Jeff Johnson295189b2012-06-20 16:38:30 -070022355 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022356 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022357==========================================================================*/
22358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 when it wishes to send up a notification like the ones
22361 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022362
Jeff Johnson295189b2012-06-20 16:38:30 -070022363 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022364
22365 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022366 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022367 wctsNotifyCBData: the callback data of the user
22368
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022370
22371 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022372*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022373void
Jeff Johnson295189b2012-06-20 16:38:30 -070022374WDI_NotifyMsgCTSCB
22375(
Jeff Johnsone7245742012-09-05 17:12:55 -070022376 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022377 WCTS_NotifyEventType wctsEvent,
22378 void* wctsNotifyCBData
22379)
22380{
Jeff Johnsone7245742012-09-05 17:12:55 -070022381 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22383
22384 if (NULL == pWDICtx )
22385 {
22386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022389 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022390 }
22391
22392 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22393 {
22394 /* callback presumably occurred after close */
22395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022396 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022397 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 }
22399
22400 if ( WCTS_EVENT_OPEN == wctsEvent )
22401 {
22402 /*Flag must be set atomically as it is checked from incoming request
22403 functions*/
22404 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022405 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022406
22407 /*Nothing to do - so try to dequeue any pending request that may have
22408 occurred while we were trying to establish this*/
22409 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022411 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022412 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 {
22414 /*Flag must be set atomically as it is checked from incoming request
22415 functions*/
22416 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022417 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022418
22419 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022420 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 wpalMutexRelease(&pWDICtx->wptMutex);
22422
22423 /*Notify that the Control Channel is closed */
22424 wpalEventSet(&pWDICtx->wctsActionEvent);
22425 }
22426
22427}/*WDI_NotifyMsgCTSCB*/
22428
22429
22430/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 when it wishes to send up a packet received over the
22433 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022434
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022436
22437 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 pMsg: the packet
22439 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022440 wctsRxMsgCBData: the callback data of the user
22441
Jeff Johnson295189b2012-06-20 16:38:30 -070022442 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022443
22444 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022445*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022446void
22447WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022448(
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 void* pMsg,
22451 wpt_uint32 uLen,
22452 void* wctsRxMsgCBData
22453)
22454{
Jeff Johnsone7245742012-09-05 17:12:55 -070022455 tHalMsgHeader *pHalMsgHeader;
22456 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022457 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22459
22460 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022463 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 ( uLen < sizeof(tHalMsgHeader)))
22465 {
22466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022467 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 }
22471
22472 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22473 {
22474 /* callback presumably occurred after close */
22475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022476 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 }
22479
Jeff Johnsone7245742012-09-05 17:12:55 -070022480 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022481 context - so no serialization is necessary here
22482 ! - revisit this assumption */
22483
22484 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22485
22486 if ( uLen != pHalMsgHeader->msgLen )
22487 {
22488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22489 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022490 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022491 wpalWlanReload();
22492
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 }
22495
22496 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22497
22498 /*The message itself starts after the header*/
22499 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22500 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22501 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22502 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22503
22504
22505 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22506 {
22507 /*Stop the timer as the response was received */
22508 /*!UT - check for potential race conditions between stop and response */
22509 wpalTimerStop(&pWDICtx->wptResponseTimer);
22510 }
22511 /* Check if we receive a response message which is not expected */
22512 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22513 {
22514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22515 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22516 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22519 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022520
22521 if (gWDICb.bEnableSSR == false)
22522 {
22523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22524 "SSR is not enabled on WDI timeout");
22525 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22526 return;
22527 }
22528 wpalWcnssResetIntr();
22529 /* if this timer fires, it means Riva did not receive the FIQ */
22530 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22531
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 return;
22533 }
22534
22535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22536 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22537
22538 /*Post response event to the state machine*/
22539 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22540
22541}/*WDI_RXMsgCTSCB*/
22542
22543
22544/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022545 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022546========================================================================*/
22547
22548/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022551
Jeff Johnson295189b2012-06-20 16:38:30 -070022552 @param pWDICtx - pointer to the control block
22553
22554 @return Result of the function call
22555*/
22556WPT_INLINE WDI_Status
22557WDI_CleanCB
22558(
22559 WDI_ControlBlockType* pWDICtx
22560)
22561{
22562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22563
22564 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022565 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022566
Jeff Johnsone7245742012-09-05 17:12:55 -070022567 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022568 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22569 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22570
22571 WDI_ResetAssocSessions( pWDICtx );
22572
22573 return WDI_STATUS_SUCCESS;
22574}/*WDI_CleanCB*/
22575
22576
22577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022578 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022579
Jeff Johnsone7245742012-09-05 17:12:55 -070022580
22581 @param pWDICtx: pointer to the WLAN DAL context
22582 pEventData: pointer to the event information structure
22583
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 @see
22585 @return Result of the function call
22586*/
22587WPT_INLINE WDI_Status
22588WDI_ProcessRequest
22589(
22590 WDI_ControlBlockType* pWDICtx,
22591 WDI_EventInfoType* pEventData
22592)
22593{
22594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22595
Jeff Johnsone7245742012-09-05 17:12:55 -070022596 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 already checked these pointers*/
22598
22599 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22600 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022601 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022603 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 WDI_getReqMsgString(pEventData->wdiRequest),
22605 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22606 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22607 }
22608 else
22609 {
22610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022611 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022612 pEventData->wdiRequest);
22613 return WDI_STATUS_E_NOT_IMPLEMENT;
22614 }
22615}/*WDI_ProcessRequest*/
22616
22617
22618/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022620 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022621 prefixes it with a send message header
22622
22623 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022624 wdiReqType: type of the request being sent
22625 uBufferLen: message buffer len
22626 pMsgBuffer: resulting allocated buffer
22627 pusDataOffset: offset in the buffer where the caller
22628 can start copying its message data
22629 puBufferSize: the resulting buffer size (offset+buff
22630 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022631
Jeff Johnson295189b2012-06-20 16:38:30 -070022632 @see
22633 @return Result of the function call
22634*/
22635WDI_Status
22636WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022637(
22638 WDI_ControlBlockType* pWDICtx,
22639 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022641 wpt_uint8** pMsgBuffer,
22642 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 wpt_uint16* pusBufferSize
22644)
22645{
22646 tHalMsgHeader halMsgHeader;
22647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22648
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 again*/
22651
22652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022654 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022656 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22657 if ( NULL == *pMsgBuffer )
22658 {
22659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22660 "Unable to allocate message buffer for req %s (%d)",
22661 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022662 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022664 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022665 }
22666
22667 /*-------------------------------------------------------------------------
22668 Fill in the message header
22669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022670 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22671 /* Fill msgVersion */
22672#ifdef WLAN_FEATURE_11AC
22673 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022674 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022675 else
22676#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022677 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022678
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22680 *pusDataOffset = sizeof(halMsgHeader);
22681 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22682
22683 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022684}/*WDI_GetMessageBuffer*/
22685
22686
22687/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022689 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 the CB
22691
22692 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022694
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 usSendSize size of the buffer to be sent
22696 pRspCb: response callback - save in the WDI
22697 CB
22698 pUserData: user data associated with the
22699 callback
22700 wdiExpectedResponse: the code of the response that is
22701 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022702
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 @see
22704 @return Result of the function call
22705*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022706WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022707WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022708(
22709 WDI_ControlBlockType* pWDICtx,
22710 wpt_uint8* pSendBuffer,
22711 wpt_uint32 usSendSize,
22712 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 void* pUserData,
22714 WDI_ResponseEnumType wdiExpectedResponse
22715)
22716{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022717 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022718 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22720
22721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022723 ------------------------------------------------------------------------*/
22724 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022725 pWDICtx->pfncRspCB = pRspCb;
22726 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022727
22728 /*-----------------------------------------------------------------------
22729 Call the CTS to send this message over - free message afterwards
22730 - notify transport failure
22731 Note: CTS is reponsible for freeing the message buffer.
22732 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022733 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22734 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22735 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022736 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022738 "Failed to send message with expected response %s (%d)"
22739 " over the bus - catastrophic failure",
22740 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22741 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022742
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022743 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22744 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022746 else
22747 {
22748 /* even when message was placed in CTS deferred Q, we will treat it
22749 success but log this info
22750 */
22751 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22752 {
22753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22754 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22755 "response %s (%d)",
22756 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22757 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022758 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022759 }
22760 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022761
Jeff Johnsond13512a2012-07-17 11:42:19 -070022762 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022763 if ( NULL != pWDICtx->wdiReqStatusCB )
22764 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022765 /*Inform originator whether request went through or not*/
22766 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22767 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 pWDICtx->wdiReqStatusCB = NULL;
22769 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022770 callback(wdiStatus, callbackContext);
22771
22772 /*For WDI requests which have registered a request callback,
22773 inform the WDA caller of the same via setting the return value
22774 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22775 end up repeating the functonality in the req callback for the
22776 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022777 if (wdiStatus != WDI_STATUS_SUCCESS)
22778 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022779 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022780 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022781 }
22782
Jeff Johnsond13512a2012-07-17 11:42:19 -070022783 if ( wdiStatus == WDI_STATUS_SUCCESS )
22784 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 /*Start timer for the expected response */
22786 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022787
22788 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022789 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022790 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022791 }
22792 else
22793 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022794 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022795 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22796 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022797
Jeff Johnsond13512a2012-07-17 11:42:19 -070022798 return wdiStatus;
22799
Jeff Johnson295189b2012-06-20 16:38:30 -070022800}/*WDI_SendMsg*/
22801
22802
22803
22804/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022805 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 the bus using the control transport and saves some info
22807 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022808
22809 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 pSendBuffer: buffer to be sent
22811 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022812
Jeff Johnson295189b2012-06-20 16:38:30 -070022813 @see
22814 @return Result of the function call
22815*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022816WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022817WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022818(
22819 WDI_ControlBlockType* pWDICtx,
22820 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022821 wpt_uint32 usSendSize
22822)
22823{
22824 wpt_uint32 uStatus ;
22825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22826
22827 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 Note: CTS is reponsible for freeing the message buffer.
22830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022831 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 (void*)pSendBuffer, usSendSize );
22833
22834 /*Inform Upper MAC about the outcome of the request*/
22835 if ( NULL != pWDICtx->wdiReqStatusCB )
22836 {
22837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22838 "Send indication status : %d", uStatus);
22839
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022840 /* even if CTS placed indication into its deferred Q, we treat it
22841 * as success and let CTS drain its queue as per smd interrupt to CTS
22842 */
22843 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 -070022844 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 }
22846
22847 /*If sending of the message failed - it is considered catastrophic and
22848 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022849 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22850 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22851
Jeff Johnson295189b2012-06-20 16:38:30 -070022852 {
22853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022854 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022855
22856 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22857 return WDI_STATUS_E_FAILURE;
22858 }
22859
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022861}/*WDI_SendIndication*/
22862
22863
22864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022865 @brief WDI_DetectedDeviceError - called internally by DAL when
22866 it has detected a failure in the device
22867
22868 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022869 usErrorCode: error code detected by WDI or received
22870 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022871
Jeff Johnson295189b2012-06-20 16:38:30 -070022872 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022873 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022874*/
22875void
22876WDI_DetectedDeviceError
22877(
22878 WDI_ControlBlockType* pWDICtx,
22879 wpt_uint16 usErrorCode
22880)
22881{
22882 WDI_LowLevelIndType wdiInd;
22883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22884
22885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22886 "Device Error detected code: %d - transitioning to stopped state",
22887 usErrorCode);
22888
Katya Nigamf02ad012014-05-05 16:12:49 +053022889 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22890
Jeff Johnson295189b2012-06-20 16:38:30 -070022891 wpalMutexAcquire(&pWDICtx->wptMutex);
22892
22893 WDI_STATableStop(pWDICtx);
22894
22895 WDI_ResetAssocSessions(pWDICtx);
22896
22897 /*Set the expected state transition to stopped - because the device
22898 experienced a failure*/
22899 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22900
22901 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022902 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022903
Jeff Johnsone7245742012-09-05 17:12:55 -070022904 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022905
22906 /*TO DO: - there should be an attempt to reset the device here*/
22907
22908 wpalMutexRelease(&pWDICtx->wptMutex);
22909
22910 /*------------------------------------------------------------------------
22911 Notify UMAC if a handler is registered
22912 ------------------------------------------------------------------------*/
22913 if (pWDICtx->wdiLowLevelIndCB)
22914 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022915 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22916 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022917
22918 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22919 }
22920}/*WDI_DetectedDeviceError*/
22921
22922/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022923 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022924 we started on send message has expire - this should
22925 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022926 reply - trigger catastrophic failure
22927 @param
22928
Jeff Johnson295189b2012-06-20 16:38:30 -070022929 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022930
22931 @see
22932 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022933*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022934void
Jeff Johnson295189b2012-06-20 16:38:30 -070022935WDI_ResponseTimerCB
22936(
22937 void *pUserData
22938)
22939{
22940 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22942
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022943 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022944 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022948 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 }
22950
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022951 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022952 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022953 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022954
22955 /* If response timer is running at this time that means this timer
22956 * event is not for the last request but rather last-to-last request and
22957 * this timer event has come after we recevied respone for last-to-last
22958 * message
22959 */
22960 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22961 {
22962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22963 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022964 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022965 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22967 "uArchTimeStampTmrStart: %llu seconds, "
22968 "uArchTimeStampTmrExp: %llu seconds",
22969 pWDICtx->uArchTimeStampRspTmrStart,
22970 pWDICtx->uArchTimeStampRspTmrExp);
22971
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022972 return;
22973 }
22974
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022975 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022976 {
22977
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022979 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022980 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022981 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022982 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22983 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22985 "uArchTimeStampTmrStart: %llu seconds, "
22986 "uArchTimeStampTmrExp: %llu seconds",
22987 pWDICtx->uArchTimeStampRspTmrStart,
22988 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022989
22990 /* WDI timeout means Riva is not responding or SMD communication to Riva
22991 * is not happening. The only possible way to recover from this error
22992 * is to initiate SSR from APPS.
22993 * There is also an option to re-enable wifi, which will eventually
22994 * trigger SSR
22995 */
22996 if (gWDICb.bEnableSSR == false)
22997 {
22998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22999 "SSR is not enabled on WDI timeout");
23000 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23001 return;
23002 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023003#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023004 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053023005 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053023006 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053023007 if(wpalIsSsrPanicOnFailure())
23008 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053023009 } else {
23010 /* if this timer fires, it means Riva did not receive the FIQ */
23011 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053023012 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023013#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023014 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23015 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023016#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023017 }
23018 else
23019 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023021 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023022 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023023 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23024 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23026 "uArchTimeStampTmrStart: %llu seconds, "
23027 "uArchTimeStampTmrExp: %llu seconds",
23028 pWDICtx->uArchTimeStampRspTmrStart,
23029 pWDICtx->uArchTimeStampRspTmrExp);
23030
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 }
23032
23033 return;
23034
23035}/*WDI_ResponseTimerCB*/
23036
23037
23038/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023039 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023040
Jeff Johnsone7245742012-09-05 17:12:55 -070023041
23042 @param pWDICtx: pointer to the WLAN DAL context
23043 pEventData: pointer to the event information structure
23044
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 @see
23046 @return Result of the function call
23047*/
23048WPT_INLINE WDI_Status
23049WDI_ProcessResponse
23050(
23051 WDI_ControlBlockType* pWDICtx,
23052 WDI_EventInfoType* pEventData
23053)
23054{
23055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23056
Jeff Johnsone7245742012-09-05 17:12:55 -070023057 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 already checked these pointers
23059 ! - revisit this assumption */
23060 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23061 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023062 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023064 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070023065 WDI_getRespMsgString(pEventData->wdiResponse),
23066 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23067 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23068 }
23069 else
23070 {
23071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023072 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023073 pEventData->wdiResponse);
23074 return WDI_STATUS_E_NOT_IMPLEMENT;
23075 }
23076}/*WDI_ProcessResponse*/
23077
23078
23079/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023081=========================================================================*/
23082
23083/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023084 @brief Utility function used by the DAL Core to help queue a
23085 request that cannot be processed right away.
23086 @param
23087
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 pWDICtx: - pointer to the WDI control block
23089 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023090 queued
23091
23092 @see
23093 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023094*/
23095WDI_Status
23096WDI_QueuePendingReq
23097(
23098 WDI_ControlBlockType* pWDICtx,
23099 WDI_EventInfoType* pEventData
23100)
23101{
Jeff Johnsone7245742012-09-05 17:12:55 -070023102 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023103 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023104 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23106
23107 if ( NULL == pEventDataQueue )
23108 {
23109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023110 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023111 WDI_ASSERT(0);
23112 return WDI_STATUS_MEM_FAILURE;
23113 }
23114
23115 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23116 pEventDataQueue->pUserData = pEventData->pUserData;
23117 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23118 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023120
23121 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23122 {
23123 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023124
Jeff Johnson295189b2012-06-20 16:38:30 -070023125 if ( NULL == pEventInfo )
23126 {
23127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023128 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023129 WDI_ASSERT(0);
23130 wpalMemoryFree(pEventDataQueue);
23131 return WDI_STATUS_MEM_FAILURE;
23132 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023133
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23135
23136 }
23137 pEventDataQueue->pEventData = pEventInfo;
23138
23139 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023140 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023141
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023142 if (eWLAN_PAL_STATUS_E_FAILURE ==
23143 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23144 {
23145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23146 "pEventDataQueue wpal_list_insert_back failed");
23147 WDI_ASSERT(0);
23148 wpalMemoryFree(pEventDataQueue);
23149 wpalMemoryFree(pEventInfo);
23150 return WDI_STATUS_MEM_FAILURE;
23151 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023152
23153 return WDI_STATUS_SUCCESS;
23154}/*WDI_QueuePendingReq*/
23155
23156/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023157 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023159 @param
23160
23161 pMsg - pointer to the message
23162
23163 @see
23164 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023165*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023166void
Jeff Johnson295189b2012-06-20 16:38:30 -070023167WDI_PALCtrlMsgCB
23168(
23169 wpt_msg *pMsg
23170)
23171{
23172 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023173 WDI_ControlBlockType* pWDICtx = NULL;
23174 WDI_Status wdiStatus;
23175 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023176 void* pUserData;
23177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23178
23179 if (( NULL == pMsg )||
23180 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23181 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23182 {
23183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023184 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023186 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 }
23188
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023189 /*Access to the global state must be locked */
23190 wpalMutexAcquire(&pWDICtx->wptMutex);
23191
Jeff Johnson295189b2012-06-20 16:38:30 -070023192 /*Transition back to the state that we had before serialization
23193 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023194 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023196 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023197
23198 /*-----------------------------------------------------------------------
23199 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023200 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023201 -----------------------------------------------------------------------*/
23202 switch ( pEventData->wdiRequest )
23203 {
23204
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23207 break;
23208
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 case WDI_NV_DOWNLOAD_REQ:
23210 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23211 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23212 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23213 {
23214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023215 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023216 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23217 }
23218 else
23219 {
23220 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23221 }
23222
23223 break;
23224
23225 default:
23226 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23227 break;
23228 }/*switch ( pEventData->wdiRequest )*/
23229
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053023230 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053023231 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 {
23233 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
23234
23235 if ( NULL != pfnReqStatusCB )
23236 {
23237 /*Fail the request*/
23238 pfnReqStatusCB( wdiStatus, pUserData);
23239 }
23240 }
23241
23242 /* Free data - that was allocated when queueing*/
23243 if( pEventData != NULL )
23244 {
23245 if( pEventData->pEventData != NULL )
23246 {
23247 wpalMemoryFree(pEventData->pEventData);
23248 }
23249 wpalMemoryFree(pEventData);
23250 }
23251
23252 if( pMsg != NULL )
23253 {
23254 wpalMemoryFree(pMsg);
23255 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023256
Jeff Johnson295189b2012-06-20 16:38:30 -070023257}/*WDI_PALCtrlMsgCB*/
23258
23259/**
23260 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 and schedule for execution a pending request
23262 @param
23263
Jeff Johnson295189b2012-06-20 16:38:30 -070023264 pWDICtx: - pointer to the WDI control block
23265 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 queued
23267
23268 @see
23269 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023270*/
23271WDI_Status
23272WDI_DequeuePendingReq
23273(
23274 WDI_ControlBlockType* pWDICtx
23275)
23276{
Jeff Johnsone7245742012-09-05 17:12:55 -070023277 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023278 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023279 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23281
Jeff Johnsone7245742012-09-05 17:12:55 -070023282 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023283
23284 if ( NULL == pNode )
23285 {
23286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023287 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023288 return WDI_STATUS_SUCCESS;
23289 }
23290
23291 /*The node actually points to the 1st element inside the Event Data struct -
23292 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023293 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023294
23295 /*Serialize processing in the control thread
23296 !TO DO: - check to see if these are all the messages params that need
23297 to be filled in*/
23298 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23299
23300 if ( NULL == palMsg )
23301 {
23302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023303 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023305 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023306 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023307 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023308 palMsg->callback = WDI_PALCtrlMsgCB;
23309 palMsg->ptr = pEventData;
23310
23311 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023313 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023314
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 /*Transition back to BUSY as we need to handle a queued request*/
23316 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023317
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23319
23320 return WDI_STATUS_PENDING;
23321}/*WDI_DequeuePendingReq*/
23322
23323
23324/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023326 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023327 away.- The assoc requests will be queued by BSSID
23328 @param
23329
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 pWDICtx: - pointer to the WDI control block
23331 pEventData: pointer to the evnt info that needs to be queued
23332 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023333
23334 @see
23335 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023336*/
23337WDI_Status
23338WDI_QueueNewAssocRequest
23339(
23340 WDI_ControlBlockType* pWDICtx,
23341 WDI_EventInfoType* pEventData,
23342 wpt_macAddr macBSSID
23343)
23344{
Jeff Johnsone7245742012-09-05 17:12:55 -070023345 wpt_uint8 i;
23346 WDI_BSSSessionType* pSession = NULL;
23347 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023348 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023349 void* pEventInfo;
23350 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023352
Jeff Johnsone7245742012-09-05 17:12:55 -070023353
23354 /*------------------------------------------------------------------------
23355 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023356 ------------------------------------------------------------------------*/
23357 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23358 {
23359 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23360 {
23361 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023362 pSession = &pWDICtx->aBSSSessions[i];
23363 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 }
23365 }
23366
23367 if ( i >= WDI_MAX_BSS_SESSIONS )
23368 {
23369 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023371 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023372
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 /*------------------------------------------------------------------------
23374 Fill in the BSSID for this session and set the usage flag
23375 ------------------------------------------------------------------------*/
23376 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378
23379 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023380 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 ------------------------------------------------------------------------*/
23382 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23383 if ( NULL == pEventDataQueue )
23384 {
23385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023386 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023387 WDI_ASSERT(0);
23388 return WDI_STATUS_MEM_FAILURE;
23389 }
23390
23391 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23392 if ( NULL == pSessionIdElement )
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 session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 WDI_ASSERT(0);
23397 wpalMemoryFree(pEventDataQueue);
23398 return WDI_STATUS_MEM_FAILURE;
23399 }
23400
23401 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23402 if ( NULL == pEventInfo )
23403 {
23404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023405 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023406 WDI_ASSERT(0);
23407 wpalMemoryFree(pSessionIdElement);
23408 wpalMemoryFree(pEventDataQueue);
23409 return WDI_STATUS_MEM_FAILURE;
23410 }
23411
23412 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23413 pEventDataQueue->pUserData = pEventData->pUserData;
23414 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23415 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023416 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023417
23418 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23419 pEventDataQueue->pEventData = pEventInfo;
23420
23421 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023423
23424 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023426
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023427 if (eWLAN_PAL_STATUS_E_FAILURE ==
23428 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23429 {
23430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23431 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23432 WDI_ASSERT(0);
23433 wpalMemoryFree(pSessionIdElement);
23434 wpalMemoryFree(pEventDataQueue);
23435 wpalMemoryFree(pEventInfo);
23436 return WDI_STATUS_MEM_FAILURE;
23437 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023438
23439 /*We need to maintain a separate list that keeps track of the order in which
23440 the new assoc requests are being queued such that we can start processing
23441 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023442 pSessionIdElement->ucIndex = i;
23443 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023444
23445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23446 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023447 if (eWLAN_PAL_STATUS_E_FAILURE ==
23448 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23449 {
23450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23451 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23452 WDI_ASSERT(0);
23453 wpalMemoryFree(pSessionIdElement);
23454 wpalMemoryFree(pEventDataQueue);
23455 wpalMemoryFree(pEventInfo);
23456 return WDI_STATUS_MEM_FAILURE;
23457 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023458
23459 /*Return pending as this is what the status of the request is since it has
23460 been queued*/
23461 return WDI_STATUS_PENDING;
23462}/*WDI_QueueNewAssocRequest*/
23463
23464/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023465 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023466 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023467 away.- The assoc requests will be queued by BSSID
23468 @param
23469
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 pWDICtx: - pointer to the WDI control block
23471 pSession: - session in which to queue
23472 pEventData: pointer to the event info that needs to be
23473 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023474
23475 @see
23476 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023477*/
23478WDI_Status
23479WDI_QueueAssocRequest
23480(
23481 WDI_ControlBlockType* pWDICtx,
23482 WDI_BSSSessionType* pSession,
23483 WDI_EventInfoType* pEventData
23484)
23485{
Jeff Johnsone7245742012-09-05 17:12:55 -070023486 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023487 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023488 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023490
23491 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023492 Sanity check
23493 ------------------------------------------------------------------------*/
23494 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23495 {
23496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023498
Jeff Johnsone7245742012-09-05 17:12:55 -070023499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023500 }
23501
23502 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023503 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023504 ------------------------------------------------------------------------*/
23505 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23506 if ( NULL == pEventDataQueue )
23507 {
23508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023509 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023510 WDI_ASSERT(0);
23511 return WDI_STATUS_MEM_FAILURE;
23512 }
23513
23514 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23515 if ( NULL == pEventInfo )
23516 {
23517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23518 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023519 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 WDI_ASSERT(0);
23521 wpalMemoryFree(pEventDataQueue);
23522 return WDI_STATUS_MEM_FAILURE;
23523 }
23524
23525 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23526 pEventDataQueue->pUserData = pEventData->pUserData;
23527 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23528 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023529 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 pEventDataQueue->pEventData = pEventInfo;
23531
23532 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23533
23534 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023535 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023536
23537 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023538 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023539
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023540 if (eWLAN_PAL_STATUS_E_FAILURE ==
23541 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23542 {
23543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23544 "%s: Cannot allocate memory for queueing event data info",
23545 __func__);
23546 WDI_ASSERT(0);
23547 wpalMemoryFree(pEventDataQueue);
23548 wpalMemoryFree(pEventInfo);
23549 return WDI_STATUS_MEM_FAILURE;
23550 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023551
23552 /*The result of this operation is pending because the request has been
23553 queued and it will be processed at a later moment in time */
23554 return WDI_STATUS_PENDING;
23555}/*WDI_QueueAssocRequest*/
23556
23557/**
23558 @brief Utility function used by the DAL Core to help dequeue
23559 an association request that was pending
23560 The request will be queued up in front of the main
23561 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023562 @param
23563
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023565
23566
23567 @see
23568 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023569*/
23570WDI_Status
23571WDI_DequeueAssocRequest
23572(
23573 WDI_ControlBlockType* pWDICtx
23574)
23575{
Jeff Johnsone7245742012-09-05 17:12:55 -070023576 wpt_list_node* pNode = NULL;
23577 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 WDI_BSSSessionType* pSession;
23579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023580
23581 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 Sanity check
23583 ------------------------------------------------------------------------*/
23584 if ( NULL == pWDICtx )
23585 {
23586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023588
Jeff Johnsone7245742012-09-05 17:12:55 -070023589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023590 }
23591
23592 /*------------------------------------------------------------------------
23593 An association has been completed => a new association can occur
23594 Check to see if there are any pending associations ->
23595 If so , transfer all the pending requests into the busy queue for
23596 processing
23597 These requests have arrived prior to the requests in the busy queue
23598 (bc they needed to be processed in order to be placed in this queue)
23599 => they will be placed at the front of the busy queue
23600 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023601 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023602
23603 if ( NULL == pNode )
23604 {
23605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 return WDI_STATUS_SUCCESS;
23608 }
23609
23610 /*The node actually points to the 1st element inside the Session Id struct -
23611 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023612 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023613
23614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23615 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23616
23617 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23618 {
23619 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023620
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023622 the front of the main waiting queue for subsequent execution*/
23623 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023624 while ( NULL != pNode )
23625 {
23626 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23628 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023629 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023630 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023631 }
23632 else
23633 {
23634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023635 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023636 WPAL_ASSERT(0);
23637 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023640
Jeff Johnson295189b2012-06-20 16:38:30 -070023641 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23642 wpalMemoryFree(pSessionIdElement);
23643 return WDI_STATUS_SUCCESS;
23644}/*WDI_DequeueAssocRequest*/
23645
23646/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023647 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 pending requests - all req cb will be called with
23649 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 @param
23651
Jeff Johnson295189b2012-06-20 16:38:30 -070023652 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023653
23654 @see
23655 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023656*/
23657WDI_Status
23658WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023659(
Jeff Johnson295189b2012-06-20 16:38:30 -070023660 WDI_ControlBlockType* pWDICtx
23661)
23662{
Jeff Johnsone7245742012-09-05 17:12:55 -070023663 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023664 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023665 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023666 void* pUserData;
23667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23668
Jeff Johnsone7245742012-09-05 17:12:55 -070023669 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023670
23671 /*------------------------------------------------------------------------
23672 Go through all the requests and fail them - this will only be called
23673 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023674 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023675 ------------------------------------------------------------------------*/
23676 while( pNode )
23677 {
23678 /*The node actually points to the 1st element inside the Event Data struct -
23679 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023680 pEventDataQueue = (WDI_EventInfoType*)pNode;
23681
Jeff Johnson295189b2012-06-20 16:38:30 -070023682 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23683 if ( NULL != pfnReqStatusCB )
23684 {
23685 /*Fail the request*/
23686 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23687 }
23688 /* Free data - that was allocated when queueing */
23689 if ( pEventDataQueue->pEventData != NULL )
23690 {
23691 wpalMemoryFree(pEventDataQueue->pEventData);
23692 }
23693 wpalMemoryFree(pEventDataQueue);
23694
23695 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23696 {
23697 break;
23698 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023699 }
23700
Jeff Johnson295189b2012-06-20 16:38:30 -070023701 return WDI_STATUS_SUCCESS;
23702}/*WDI_ClearPendingRequests*/
23703
23704/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023705 @brief Helper routine used to init the BSS Sessions in the WDI control block
23706
23707
23708 @param pWDICtx: pointer to the WLAN DAL context
23709
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 @see
23711*/
23712void
23713WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023714(
Jeff Johnson295189b2012-06-20 16:38:30 -070023715 WDI_ControlBlockType* pWDICtx
23716)
23717{
Jeff Johnsone7245742012-09-05 17:12:55 -070023718 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23720
23721 /*-------------------------------------------------------------------------
23722 No Sanity check
23723 -------------------------------------------------------------------------*/
23724 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23725 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023726 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23728 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23729 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23730 }
23731}/*WDI_ResetAssocSessions*/
23732
23733/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023734 @brief Helper routine used to find a session based on the BSSID
23735
23736
23737 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023738 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 pSession: pointer to the session (if found)
23740
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023742 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023743*/
23744wpt_uint8
23745WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023746(
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 WDI_ControlBlockType* pWDICtx,
23748 wpt_macAddr macBSSID,
23749 WDI_BSSSessionType** ppSession
23750)
23751{
Jeff Johnsone7245742012-09-05 17:12:55 -070023752 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23754
23755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023757 -------------------------------------------------------------------------*/
23758 if ( NULL == ppSession )
23759 {
23760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023761 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023762 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 }
23764
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023766
Jeff Johnsone7245742012-09-05 17:12:55 -070023767 /*------------------------------------------------------------------------
23768 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023769 ------------------------------------------------------------------------*/
23770 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23771 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023772 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23773 (eWLAN_PAL_TRUE ==
23774 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23775 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 {
23777 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023778 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023779 return i;
23780 }
23781 }
23782
Jeff Johnsone7245742012-09-05 17:12:55 -070023783 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023784}/*WDI_FindAssocSession*/
23785
23786/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023787 @brief Helper routine used to find a session based on the BSSID
23788
23789
23790 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 ucBSSIdx: BSS Index of the session
23792 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023793
Jeff Johnson295189b2012-06-20 16:38:30 -070023794 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023795 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023796*/
23797wpt_uint8
23798WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023799(
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 WDI_ControlBlockType* pWDICtx,
23801 wpt_uint16 ucBSSIdx,
23802 WDI_BSSSessionType** ppSession
23803)
23804{
Jeff Johnsone7245742012-09-05 17:12:55 -070023805 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23807
23808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 -------------------------------------------------------------------------*/
23811 if ( NULL == ppSession )
23812 {
23813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023814 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 }
23817
Jeff Johnsone7245742012-09-05 17:12:55 -070023818 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023819
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 /*------------------------------------------------------------------------
23821 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 ------------------------------------------------------------------------*/
23823 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23824 {
23825 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23826 {
23827 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023828 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023829 return i;
23830 }
23831 }
23832
Jeff Johnsone7245742012-09-05 17:12:55 -070023833 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023834}/*WDI_FindAssocSessionByBSSIdx*/
23835
23836/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023837 @brief Helper routine used to find a session based on the BSSID
23838
23839
23840 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 ucBSSIdx: BSS Index of the session
23842 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023843
Jeff Johnson295189b2012-06-20 16:38:30 -070023844 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023846*/
23847wpt_uint8
23848WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023849(
Jeff Johnson295189b2012-06-20 16:38:30 -070023850 WDI_ControlBlockType* pWDICtx,
23851 wpt_uint16 usIdx,
23852 WDI_BSSSessionType** ppSession
23853)
23854{
23855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23856
23857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 -------------------------------------------------------------------------*/
23860 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23861 {
23862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023863 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023864 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 }
23866
23867 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023869
23870 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023871
Jeff Johnson295189b2012-06-20 16:38:30 -070023872}/*WDI_FindAssocSessionByBSSIdx*/
23873
23874/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023875 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023876 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023877
23878
23879 @param pWDICtx: pointer to the WLAN DAL context
23880 pSession: pointer to the session (if found)
23881
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023884*/
23885wpt_uint8
23886WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023887(
Jeff Johnson295189b2012-06-20 16:38:30 -070023888 WDI_ControlBlockType* pWDICtx,
23889 WDI_BSSSessionType** ppSession
23890)
23891{
Jeff Johnsone7245742012-09-05 17:12:55 -070023892 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023895 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023896 -------------------------------------------------------------------------*/
23897 if ( NULL == ppSession )
23898 {
23899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023900 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023901 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023902 }
23903
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023905
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 /*------------------------------------------------------------------------
23907 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 ------------------------------------------------------------------------*/
23909 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23910 {
23911 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23912 {
23913 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023915 return i;
23916 }
23917 }
23918
Jeff Johnsone7245742012-09-05 17:12:55 -070023919 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023920}/*WDI_FindEmptySession*/
23921
23922
23923/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023924 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023925 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023926
23927
23928 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023929 macBSSID: pointer to BSSID. If NULL, get all the session.
23930 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23931 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23932 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023933 @see
23934 @return Number of sessions in use
23935*/
23936wpt_uint8
23937WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023938(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023939 WDI_ControlBlockType* pWDICtx,
23940 wpt_macAddr macBSSID,
23941 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023942)
23943{
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023946
23947 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023948 Count all sessions in use
23949 ------------------------------------------------------------------------*/
23950 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23951 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023952 if ( macBSSID && skipBSSID &&
23953 (eWLAN_PAL_TRUE ==
23954 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23955 WDI_MAC_ADDR_LEN)))
23956 {
23957 continue;
23958 }
23959 else if ( pWDICtx->aBSSSessions[i].bInUse )
23960 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023961 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023962 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 }
23964
Jeff Johnsone7245742012-09-05 17:12:55 -070023965 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023966}/*WDI_GetActiveSessionsCount*/
23967
23968/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023969 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023971
23972
23973 @param pWDICtx: pointer to the WLAN DAL context
23974 pSession: pointer to the session (if found)
23975
Jeff Johnson295189b2012-06-20 16:38:30 -070023976 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023977 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023978*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023979void
Jeff Johnson295189b2012-06-20 16:38:30 -070023980WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023981(
Jeff Johnson295189b2012-06-20 16:38:30 -070023982 WDI_ControlBlockType* pWDICtx,
23983 WDI_BSSSessionType* ppSession
23984)
23985{
23986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 -------------------------------------------------------------------------*/
23989 if ( NULL == ppSession )
23990 {
23991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023992 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023993 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 }
23995
Jeff Johnsone7245742012-09-05 17:12:55 -070023996 /*------------------------------------------------------------------------
23997 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 ------------------------------------------------------------------------*/
23999 wpal_list_destroy(&ppSession->wptPendingQueue);
24000 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
24002 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024003 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
24004 wpal_list_init(&ppSession->wptPendingQueue);
24005
24006}/*WDI_DeleteSession*/
24007
24008/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024009 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070024010 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070024011 @param
24012
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 WDI_AddStaParams: - pointer to the WDI Add STA params
24014 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070024015
24016 @see
24017 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070024018*/
24019void
24020WDI_AddBcastSTAtoSTATable
24021(
24022 WDI_ControlBlockType* pWDICtx,
24023 WDI_AddStaParams * staParams,
24024 wpt_uint16 usBcastStaIdx
24025)
24026{
24027 WDI_AddStaParams wdiAddSTAParam = {0};
24028 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
24029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24030
24031 /*---------------------------------------------------------------------
24032 Sanity check
24033 ---------------------------------------------------------------------*/
24034 if ( NULL == staParams )
24035 {
24036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024037 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024038
Jeff Johnsone7245742012-09-05 17:12:55 -070024039 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 }
24041
24042 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
24043 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
24044 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24045 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24046 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24047 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24048 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24049 WDI_MAC_ADDR_LEN );
24050 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24051 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24052 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24053 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24054 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24055 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24056 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024057
Jeff Johnson295189b2012-06-20 16:38:30 -070024058 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24059}
24060
24061/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024062 @brief NV blob will be divided into fragments of size 4kb and
24063 Sent to HAL
24064
24065 @param pWDICtx: pointer to the WLAN DAL context
24066 pEventData: pointer to the event information structure
24067
Jeff Johnson295189b2012-06-20 16:38:30 -070024068 @see
24069 @return Result of the function call
24070 */
24071
24072WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024073(
Jeff Johnson295189b2012-06-20 16:38:30 -070024074 WDI_ControlBlockType* pWDICtx,
24075 WDI_EventInfoType* pEventData
24076)
24077{
24078
24079 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24080 wpt_uint8* pSendBuffer = NULL;
24081 wpt_uint16 usDataOffset = 0;
24082 wpt_uint16 usSendSize = 0;
24083 wpt_uint16 usCurrentFragmentSize =0;
24084 wpt_uint8* pSrcBuffer = NULL;
24085 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24086 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24087
24088 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24089 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24090 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24091
Jeff Johnsone7245742012-09-05 17:12:55 -070024092 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024093 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24094
24095 /* Update the current Fragment Number */
24096 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24097
24098 /*Update the HAL REQ structure */
24099 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24100 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24101 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24102
24103 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 image will be sent to HAL*/
24106
Jeff Johnsone7245742012-09-05 17:12:55 -070024107 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024108 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024109 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024111 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24113 usCurrentFragmentSize = FRAGMENT_SIZE;
24114
24115 /*Update the HAL REQ structure */
24116 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24117 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24118
24119 }
24120 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024121 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024122 usCurrentFragmentSize = FRAGMENT_SIZE;
24123
24124 /*Update the HAL REQ structure */
24125 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24126 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24127 }
24128
24129 /*-----------------------------------------------------------------------
24130 Get message buffer
24131 -----------------------------------------------------------------------*/
24132 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24133 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24134 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024135 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024136 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24137 {
24138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024139 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 pEventData, pwdiNvDownloadReqParams);
24141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024143 }
24144
24145 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024146 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024147 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24148
24149 /* Appending the NV image fragment */
24150 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24151 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24152 usCurrentFragmentSize);
24153
24154 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024155 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024156
Jeff Johnsone7245742012-09-05 17:12:55 -070024157 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24158 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024159 WDI_NV_DOWNLOAD_RESP);
24160
24161}
Jeff Johnsone7245742012-09-05 17:12:55 -070024162/*============================================================================
24163 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 ============================================================================*/
24165/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024166 @brief Helper routine used to find a session based on the BSSID
24167 @param pContext: pointer to the WLAN DAL context
24168 @param pDPContext: pointer to the Datapath context
24169
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024172*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024173WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024174WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24175{
24176 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24177
24178 pCB->pDPContext = pDPContext;
24179 return;
24180}
24181
24182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 @brief Helper routine used to find a session based on the BSSID
24184
24185
24186 @param pContext: pointer to the WLAN DAL context
24187
Jeff Johnson295189b2012-06-20 16:38:30 -070024188 @see
24189 @return pointer to Datapath context
24190*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024191WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024192WDI_DS_GetDatapathContext (void *pContext)
24193{
24194 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24195 return pCB->pDPContext;
24196}
24197/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024198 @brief Helper routine used to find a session based on the BSSID
24199
24200
24201 @param pContext: pointer to the WLAN DAL context
24202 @param pDTDriverContext: pointer to the Transport Driver context
24203
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 @see
24205 @return void
24206*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024207WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024208WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24209{
24210 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24211
24212 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024213 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024214}
24215
24216/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024217 @brief Helper routine used to find a session based on the BSSID
24218
24219
24220 @param pWDICtx: pointer to the WLAN DAL context
24221
Jeff Johnson295189b2012-06-20 16:38:30 -070024222 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024223 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070024224*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024225WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024226WDT_GetTransportDriverContext (void *pContext)
24227{
24228 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024229 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070024230}
24231
Jeff Johnsone7245742012-09-05 17:12:55 -070024232/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070024233 Helper inline converters
24234 ============================================================================*/
24235/*Convert WDI driver type into HAL driver type*/
24236WPT_STATIC WPT_INLINE WDI_Status
24237WDI_HAL_2_WDI_STATUS
24238(
24239 eHalStatus halStatus
24240)
24241{
Jeff Johnsone7245742012-09-05 17:12:55 -070024242 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024243 the chances of getting inlined*/
24244 switch( halStatus )
24245 {
24246 case eHAL_STATUS_SUCCESS:
24247 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24248 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24249 return WDI_STATUS_SUCCESS;
24250 case eHAL_STATUS_FAILURE:
24251 return WDI_STATUS_E_FAILURE;
24252 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070024253 return WDI_STATUS_MEM_FAILURE;
24254 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024256 default:
24257 return WDI_STATUS_DEV_INTERNAL_FAILURE;
24258 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024259
Jeff Johnsone7245742012-09-05 17:12:55 -070024260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024261}/*WDI_HAL_2_WDI_STATUS*/
24262
24263/*Convert WDI request type into HAL request type*/
24264WPT_STATIC WPT_INLINE tHalHostMsgType
24265WDI_2_HAL_REQ_TYPE
24266(
24267 WDI_RequestEnumType wdiReqType
24268)
24269{
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024271 the chances of getting inlined*/
24272 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024274 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024275 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024277 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024278 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024281 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024283 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024284 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024285 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024287 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024289 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024291 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024295 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024297 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024299 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024300 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024301 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024302 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024303 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 return WLAN_HAL_RMV_STAKEY_REQ;
24309 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024314 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024315 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024316 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 case WDI_DEL_BA_REQ:
24318 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024319#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 case WDI_TSM_STATS_REQ:
24321 return WLAN_HAL_TSM_STATS_REQ;
24322#endif
24323 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024328 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024330 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024331 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024332 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024333 case WDI_ADD_BA_SESSION_REQ:
24334 return WLAN_HAL_ADD_BA_SESSION_REQ;
24335 case WDI_TRIGGER_BA_REQ:
24336 return WLAN_HAL_TRIGGER_BA_REQ;
24337 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024338 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024339 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024340 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024341 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24342 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24343 case WDI_SET_MAX_TX_POWER_REQ:
24344 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024345 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24346 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024347 case WDI_SET_TX_POWER_REQ:
24348 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024349 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24350 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024351#ifdef FEATURE_WLAN_TDLS
24352 case WDI_TDLS_LINK_ESTABLISH_REQ:
24353 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024354 case WDI_TDLS_CHAN_SWITCH_REQ:
24355 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024356#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024358 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024359 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024360 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024362 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024363 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024364 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024365 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024366 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024367 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024368 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024369 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024370 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024372 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024373 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024374 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024376 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 case WDI_REM_BEACON_FILTER_REQ:
24378 return WLAN_HAL_REM_BCN_FILTER_REQ;
24379 case WDI_SET_RSSI_THRESHOLDS_REQ:
24380 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24381 case WDI_HOST_OFFLOAD_REQ:
24382 return WLAN_HAL_HOST_OFFLOAD_REQ;
24383 case WDI_WOWL_ADD_BC_PTRN_REQ:
24384 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24385 case WDI_WOWL_DEL_BC_PTRN_REQ:
24386 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24387 case WDI_WOWL_ENTER_REQ:
24388 return WLAN_HAL_ENTER_WOWL_REQ;
24389 case WDI_WOWL_EXIT_REQ:
24390 return WLAN_HAL_EXIT_WOWL_REQ;
24391 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24392 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24393 case WDI_NV_DOWNLOAD_REQ:
24394 return WLAN_HAL_DOWNLOAD_NV_REQ;
24395 case WDI_FLUSH_AC_REQ:
24396 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24397 case WDI_BTAMP_EVENT_REQ:
24398 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24399#ifdef WLAN_FEATURE_VOWIFI_11R
24400 case WDI_AGGR_ADD_TS_REQ:
24401 return WLAN_HAL_AGGR_ADD_TS_REQ;
24402#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 case WDI_FTM_CMD_REQ:
24404 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 case WDI_ADD_STA_SELF_REQ:
24406 return WLAN_HAL_ADD_STA_SELF_REQ;
24407 case WDI_DEL_STA_SELF_REQ:
24408 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024409#ifdef FEATURE_OEM_DATA_SUPPORT
24410 case WDI_START_OEM_DATA_REQ:
24411 return WLAN_HAL_START_OEM_DATA_REQ;
24412#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 case WDI_HOST_RESUME_REQ:
24414 return WLAN_HAL_HOST_RESUME_REQ;
24415 case WDI_HOST_SUSPEND_IND:
24416 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024417 case WDI_TRAFFIC_STATS_IND:
24418 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024419#ifdef WLAN_FEATURE_11W
24420 case WDI_EXCLUDE_UNENCRYPTED_IND:
24421 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24422#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024423 case WDI_KEEP_ALIVE_REQ:
24424 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024425#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024426 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24427 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024428#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024429#ifdef FEATURE_WLAN_SCAN_PNO
24430 case WDI_SET_PREF_NETWORK_REQ:
24431 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24432 case WDI_SET_RSSI_FILTER_REQ:
24433 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24434 case WDI_UPDATE_SCAN_PARAMS_REQ:
24435 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24436#endif // FEATURE_WLAN_SCAN_PNO
24437 case WDI_SET_TX_PER_TRACKING_REQ:
24438 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24439#ifdef WLAN_FEATURE_PACKET_FILTERING
24440 case WDI_8023_MULTICAST_LIST_REQ:
24441 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24442 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024443 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24445 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24446 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24447 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24448#endif // WLAN_FEATURE_PACKET_FILTERING
24449 case WDI_HAL_DUMP_CMD_REQ:
24450 return WLAN_HAL_DUMP_COMMAND_REQ;
24451#ifdef WLAN_FEATURE_GTK_OFFLOAD
24452 case WDI_GTK_OFFLOAD_REQ:
24453 return WLAN_HAL_GTK_OFFLOAD_REQ;
24454 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24455 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24456#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24457
24458 case WDI_INIT_SCAN_CON_REQ:
24459 return WLAN_HAL_INIT_SCAN_CON_REQ;
24460 case WDI_SET_POWER_PARAMS_REQ:
24461 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24462 case WDI_SET_TM_LEVEL_REQ:
24463 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24464 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24465 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024466#ifdef WLAN_FEATURE_11AC
24467 case WDI_UPDATE_VHT_OP_MODE_REQ:
24468 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24469#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024470 case WDI_GET_ROAM_RSSI_REQ:
24471 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024472 case WDI_DHCP_START_IND:
24473 return WLAN_HAL_DHCP_START_IND;
24474 case WDI_DHCP_STOP_IND:
24475 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024476#ifdef FEATURE_WLAN_LPHB
24477 case WDI_LPHB_CFG_REQ:
24478 return WLAN_HAL_LPHB_CFG_REQ;
24479#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024480 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24481 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24482 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24483 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24484
Rajeev79dbe4c2013-10-05 11:03:42 +053024485#ifdef FEATURE_WLAN_BATCH_SCAN
24486 case WDI_SET_BATCH_SCAN_REQ:
24487 return WLAN_HAL_BATCHSCAN_SET_REQ;
24488 case WDI_STOP_BATCH_SCAN_IND:
24489 return WLAN_HAL_BATCHSCAN_STOP_IND;
24490 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24491 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24492#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024493 case WDI_RATE_UPDATE_IND:
24494 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024495 case WDI_START_HT40_OBSS_SCAN_IND:
24496 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24497 case WDI_STOP_HT40_OBSS_SCAN_IND:
24498 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024499 case WDI_UPDATE_CHAN_REQ:
24500 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024501 case WDI_CH_SWITCH_REQ_V1:
24502 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024503 case WDI_GET_BCN_MISS_RATE_REQ:
24504 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024505
24506#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24507 case WDI_LL_STATS_SET_REQ:
24508 return WLAN_HAL_LL_SET_STATS_REQ;
24509 case WDI_LL_STATS_GET_REQ:
24510 return WLAN_HAL_LL_GET_STATS_REQ;
24511 case WDI_LL_STATS_CLEAR_REQ:
24512 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24513#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024514#ifdef WLAN_FEATURE_EXTSCAN
24515 case WDI_EXTSCAN_START_REQ:
24516 return WLAN_HAL_EXT_SCAN_START_REQ;
24517 case WDI_EXTSCAN_STOP_REQ:
24518 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24519 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24520 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24521 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24522 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24523 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24524 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24525 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24526 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024527 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24528 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24529 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24530 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053024531 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
24532 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053024533#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024534 case WDI_SPOOF_MAC_ADDR_REQ:
24535 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024536 case WDI_GET_FW_STATS_REQ:
24537 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024538 case WDI_ENCRYPT_MSG_REQ:
24539 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024540 case WDI_FW_LOGGING_INIT_REQ:
24541 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024542 case WDI_GET_FRAME_LOG_REQ:
24543 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024544 case WDI_NAN_REQUEST:
24545 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024546 case WDI_SET_RTS_CTS_HTVHT_IND:
24547 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024548 case WDI_MON_START_REQ:
24549 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24550 case WDI_MON_STOP_REQ:
24551 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024552 case WDI_FW_LOGGING_DXE_DONE_IND:
24553 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024554 case WDI_FATAL_EVENT_LOGGING_REQ:
24555 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024556 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24557 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053024558 case WDI_FWR_MEM_DUMP_REQ:
24559 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024560 case WDI_START_RSSI_MONITOR_REQ:
24561 return WLAN_HAL_START_RSSI_MONITORING_REQ;
24562 case WDI_STOP_RSSI_MONITOR_REQ:
24563 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024564 case WDI_WIFI_CONFIG_SET_REQ:
24565 return WLAN_HAL_WIFI_CONFIG_SET_PARAMS_REQ;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024566 case WDI_START_OEM_DATA_REQ_IND_NEW:
24567 return WLAN_HAL_START_OEM_DATA_REQ_IND_NEW;
Jeff Johnson295189b2012-06-20 16:38:30 -070024568 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024569 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024571
Jeff Johnson295189b2012-06-20 16:38:30 -070024572}/*WDI_2_HAL_REQ_TYPE*/
24573
24574/*Convert WDI response type into HAL response type*/
24575WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24576HAL_2_WDI_RSP_TYPE
24577(
24578 tHalHostMsgType halMsg
24579)
24580{
Jeff Johnsone7245742012-09-05 17:12:55 -070024581 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024582 the chances of getting inlined*/
24583 switch( halMsg )
24584 {
24585 case WLAN_HAL_START_RSP:
24586 return WDI_START_RESP;
24587 case WLAN_HAL_STOP_RSP:
24588 return WDI_STOP_RESP;
24589 case WLAN_HAL_INIT_SCAN_RSP:
24590 return WDI_INIT_SCAN_RESP;
24591 case WLAN_HAL_START_SCAN_RSP:
24592 return WDI_START_SCAN_RESP;
24593 case WLAN_HAL_END_SCAN_RSP:
24594 return WDI_END_SCAN_RESP;
24595 case WLAN_HAL_FINISH_SCAN_RSP:
24596 return WDI_FINISH_SCAN_RESP;
24597 case WLAN_HAL_CONFIG_STA_RSP:
24598 return WDI_CONFIG_STA_RESP;
24599 case WLAN_HAL_DELETE_STA_RSP:
24600 return WDI_DEL_STA_RESP;
24601 case WLAN_HAL_CONFIG_BSS_RSP:
24602 return WDI_CONFIG_BSS_RESP;
24603 case WLAN_HAL_DELETE_BSS_RSP:
24604 return WDI_DEL_BSS_RESP;
24605 case WLAN_HAL_JOIN_RSP:
24606 return WDI_JOIN_RESP;
24607 case WLAN_HAL_POST_ASSOC_RSP:
24608 return WDI_POST_ASSOC_RESP;
24609 case WLAN_HAL_SET_BSSKEY_RSP:
24610 return WDI_SET_BSS_KEY_RESP;
24611 case WLAN_HAL_SET_STAKEY_RSP:
24612 return WDI_SET_STA_KEY_RESP;
24613 case WLAN_HAL_RMV_BSSKEY_RSP:
24614 return WDI_RMV_BSS_KEY_RESP;
24615 case WLAN_HAL_RMV_STAKEY_RSP:
24616 return WDI_RMV_STA_KEY_RESP;
24617 case WLAN_HAL_SET_BCASTKEY_RSP:
24618 return WDI_SET_STA_BCAST_KEY_RESP;
24619 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24620 // return WDI_RMV_STA_BCAST_KEY_RESP;
24621 case WLAN_HAL_ADD_TS_RSP:
24622 return WDI_ADD_TS_RESP;
24623 case WLAN_HAL_DEL_TS_RSP:
24624 return WDI_DEL_TS_RESP;
24625 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24626 return WDI_UPD_EDCA_PRMS_RESP;
24627 case WLAN_HAL_ADD_BA_RSP:
24628 return WDI_ADD_BA_RESP;
24629 case WLAN_HAL_DEL_BA_RSP:
24630 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024631#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024632 case WLAN_HAL_TSM_STATS_RSP:
24633 return WDI_TSM_STATS_RESP;
24634#endif
24635 case WLAN_HAL_CH_SWITCH_RSP:
24636 return WDI_CH_SWITCH_RESP;
24637 case WLAN_HAL_SET_LINK_ST_RSP:
24638 return WDI_SET_LINK_ST_RESP;
24639 case WLAN_HAL_GET_STATS_RSP:
24640 return WDI_GET_STATS_RESP;
24641 case WLAN_HAL_UPDATE_CFG_RSP:
24642 return WDI_UPDATE_CFG_RESP;
24643 case WLAN_HAL_ADD_BA_SESSION_RSP:
24644 return WDI_ADD_BA_SESSION_RESP;
24645 case WLAN_HAL_TRIGGER_BA_RSP:
24646 return WDI_TRIGGER_BA_RESP;
24647 case WLAN_HAL_UPDATE_BEACON_RSP:
24648 return WDI_UPD_BCON_PRMS_RESP;
24649 case WLAN_HAL_SEND_BEACON_RSP:
24650 return WDI_SND_BCON_RESP;
24651 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24652 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24653 /*Indications*/
24654 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24655 return WDI_HAL_RSSI_NOTIFICATION_IND;
24656 case WLAN_HAL_MISSED_BEACON_IND:
24657 return WDI_HAL_MISSED_BEACON_IND;
24658 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24659 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24660 case WLAN_HAL_MIC_FAILURE_IND:
24661 return WDI_HAL_MIC_FAILURE_IND;
24662 case WLAN_HAL_FATAL_ERROR_IND:
24663 return WDI_HAL_FATAL_ERROR_IND;
24664 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24665 return WDI_HAL_DEL_STA_IND;
24666 case WLAN_HAL_COEX_IND:
24667 return WDI_HAL_COEX_IND;
24668 case WLAN_HAL_OTA_TX_COMPL_IND:
24669 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024670 case WLAN_HAL_P2P_NOA_ATTR_IND:
24671 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024672 case WLAN_HAL_P2P_NOA_START_IND:
24673 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024674 case WLAN_HAL_DEL_BA_IND:
24675 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024676 case WLAN_HAL_TX_PER_HIT_IND:
24677 return WDI_HAL_TX_PER_HIT_IND;
24678 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24679 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024680 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24681 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024682 case WLAN_HAL_SET_TX_POWER_RSP:
24683 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 case WLAN_HAL_SET_P2P_GONOA_RSP:
24685 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024686#ifdef FEATURE_WLAN_TDLS
24687 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24688 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024689 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24690 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024691 case WLAN_HAL_TDLS_IND:
24692 return WDI_HAL_TDLS_IND;
24693#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024695 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024696 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024697 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024698 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024699 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024700 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024701 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024704 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024705 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024706 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024707 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024708 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024709 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024710 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024711 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24713 return WDI_SET_BEACON_FILTER_RESP;
24714 case WLAN_HAL_REM_BCN_FILTER_RSP:
24715 return WDI_REM_BEACON_FILTER_RESP;
24716 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24717 return WDI_SET_RSSI_THRESHOLDS_RESP;
24718 case WLAN_HAL_HOST_OFFLOAD_RSP:
24719 return WDI_HOST_OFFLOAD_RESP;
24720 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24721 return WDI_WOWL_ADD_BC_PTRN_RESP;
24722 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24723 return WDI_WOWL_DEL_BC_PTRN_RESP;
24724 case WLAN_HAL_ENTER_WOWL_RSP:
24725 return WDI_WOWL_ENTER_RESP;
24726 case WLAN_HAL_EXIT_WOWL_RSP:
24727 return WDI_WOWL_EXIT_RESP;
24728 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24729 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24730 case WLAN_HAL_DOWNLOAD_NV_RSP:
24731 return WDI_NV_DOWNLOAD_RESP;
24732 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24733 return WDI_FLUSH_AC_RESP;
24734 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24735 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024736 case WLAN_HAL_PROCESS_PTT_RSP:
24737 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024738 case WLAN_HAL_ADD_STA_SELF_RSP:
24739 return WDI_ADD_STA_SELF_RESP;
24740case WLAN_HAL_DEL_STA_SELF_RSP:
24741 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024742#ifdef FEATURE_OEM_DATA_SUPPORT
24743 case WLAN_HAL_START_OEM_DATA_RSP:
24744 return WDI_START_OEM_DATA_RESP;
24745#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024746 case WLAN_HAL_HOST_RESUME_RSP:
24747 return WDI_HOST_RESUME_RESP;
24748 case WLAN_HAL_KEEP_ALIVE_RSP:
24749 return WDI_KEEP_ALIVE_RESP;
24750#ifdef FEATURE_WLAN_SCAN_PNO
24751 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24752 return WDI_SET_PREF_NETWORK_RESP;
24753 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024754 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024755 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24756 return WDI_UPDATE_SCAN_PARAMS_RESP;
24757 case WLAN_HAL_PREF_NETW_FOUND_IND:
24758 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24759#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024760#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024761 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24762 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024763#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024764 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24765 return WDI_SET_TX_PER_TRACKING_RESP;
24766#ifdef WLAN_FEATURE_PACKET_FILTERING
24767 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24768 return WDI_8023_MULTICAST_LIST_RESP;
24769 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24770 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24771 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24772 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24773 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24774 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24775#endif // WLAN_FEATURE_PACKET_FILTERING
24776
24777 case WLAN_HAL_DUMP_COMMAND_RSP:
24778 return WDI_HAL_DUMP_CMD_RESP;
24779 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24780 return WDI_SET_POWER_PARAMS_RESP;
24781#ifdef WLAN_FEATURE_VOWIFI_11R
24782 case WLAN_HAL_AGGR_ADD_TS_RSP:
24783 return WDI_AGGR_ADD_TS_RESP;
24784#endif
24785
24786#ifdef WLAN_FEATURE_GTK_OFFLOAD
24787 case WLAN_HAL_GTK_OFFLOAD_RSP:
24788 return WDI_GTK_OFFLOAD_RESP;
24789 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24790 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24791#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24792#ifdef WLAN_WAKEUP_EVENTS
24793 case WLAN_HAL_WAKE_REASON_IND:
24794 return WDI_HAL_WAKE_REASON_IND;
24795#endif // WLAN_WAKEUP_EVENTS
24796
24797 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24798 return WDI_SET_TM_LEVEL_RESP;
24799 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24800 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024801#ifdef WLAN_FEATURE_11AC
24802 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24803 return WDI_UPDATE_VHT_OP_MODE_RESP;
24804#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024805#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024806 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24807 return WDI_GET_ROAM_RSSI_RESP;
24808#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024809
Leo Chang9056f462013-08-01 19:21:11 -070024810#ifdef FEATURE_WLAN_LPHB
24811 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024812 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024813 case WLAN_HAL_LPHB_CFG_RSP:
24814 return WDI_LPHB_CFG_RESP;
24815#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024816
24817 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24818 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024819 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24820 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024821
Rajeev79dbe4c2013-10-05 11:03:42 +053024822#ifdef FEATURE_WLAN_BATCH_SCAN
24823 case WLAN_HAL_BATCHSCAN_SET_RSP:
24824 return WDI_SET_BATCH_SCAN_RESP;
24825 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24826 return WDI_BATCHSCAN_RESULT_IND;
24827#endif // FEATURE_WLAN_BATCH_SCAN
24828
Leo Chang0b0e45a2013-12-15 15:18:55 -080024829#ifdef FEATURE_WLAN_CH_AVOID
24830 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24831 return WDI_HAL_CH_AVOID_IND;
24832#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024833 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24834 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024835 case WLAN_HAL_PRINT_REG_INFO_IND:
24836 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024837 case WLAN_HAL_CH_SWITCH_V1_RSP:
24838 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024839 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24840 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024841#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24842 case WLAN_HAL_LL_SET_STATS_RSP:
24843 return WDI_LL_STATS_SET_RSP;
24844 case WLAN_HAL_LL_GET_STATS_RSP:
24845 return WDI_LL_STATS_GET_RSP;
24846 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24847 return WDI_LL_STATS_CLEAR_RSP;
24848 case WLAN_HAL_LL_NOTIFY_STATS:
24849 return WDI_HAL_LL_STATS_RESULTS_IND;
24850#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024851#ifdef WLAN_FEATURE_EXTSCAN
24852 case WLAN_HAL_EXT_SCAN_START_RSP:
24853 return WDI_EXTSCAN_START_RSP;
24854 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24855 return WDI_EXTSCAN_STOP_RSP;
24856 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24857 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24858 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24859 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24860 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24861 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24862 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24863 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024864 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
24865 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
24866 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
24867 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053024868 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24869 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24870 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24871 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24872 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24873 return WDI_HAL_EXTSCAN_RESULT_IND;
24874 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24875 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024876 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
24877 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053024878#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024879 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24880 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024881 case WLAN_HAL_FW_STATS_RSP:
24882 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024883 case WLAN_HAL_ENCRYPT_DATA_RSP:
24884 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024885 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24886 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024887 case WLAN_HAL_GET_FRAME_LOG_RSP:
24888 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024889 case WLAN_HAL_NAN_RSP:
24890 return WDI_NAN_RESPONSE;
24891 case WLAN_HAL_NAN_EVT:
24892 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024893 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24894 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024895 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24896 return WDI_MON_START_RSP;
24897 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24898 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024899 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24900 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053024901 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
24902 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024903 case WLAN_HAL_START_RSSI_MONITORING_RSP:
24904 return WDI_START_RSSI_MONITOR_RSP;
24905 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
24906 return WDI_STOP_RSSI_MONITOR_RSP;
24907 case WLAN_HAL_RSSI_MONITORING_IND:
24908 return WDI_HAL_RSSI_BREACHED_IND;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024909 case WLAN_HAL_WIFI_CONFIG_SET_PARAMS_RSP:
24910 return WDI_WIFI_CONFIG_SET_RSP;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024911#ifdef FEATURE_OEM_DATA_SUPPORT
24912 case WLAN_HAL_START_OEM_DATA_RSP_IND_NEW:
24913 return WDI_HAL_START_OEM_DATA_RSP_IND_NEW;
24914#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024915 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024916 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024917 }
24918
24919}/*HAL_2_WDI_RSP_TYPE*/
24920
24921
24922/*Convert WDI driver type into HAL driver type*/
24923WPT_STATIC WPT_INLINE tDriverType
24924WDI_2_HAL_DRV_TYPE
24925(
24926 WDI_DriverType wdiDriverType
24927)
24928{
Jeff Johnsone7245742012-09-05 17:12:55 -070024929 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024930 the chances of getting inlined*/
24931 switch( wdiDriverType )
24932 {
24933 case WDI_DRIVER_TYPE_PRODUCTION:
24934 return eDRIVER_TYPE_PRODUCTION;
24935 case WDI_DRIVER_TYPE_MFG:
24936 return eDRIVER_TYPE_MFG;
24937 case WDI_DRIVER_TYPE_DVT:
24938 return eDRIVER_TYPE_DVT;
24939 }
24940
Jeff Johnsone7245742012-09-05 17:12:55 -070024941 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024942}/*WDI_2_HAL_DRV_TYPE*/
24943
24944
24945/*Convert WDI stop reason into HAL stop reason*/
24946WPT_STATIC WPT_INLINE tHalStopType
24947WDI_2_HAL_STOP_REASON
24948(
24949 WDI_StopType wdiDriverType
24950)
24951{
Jeff Johnsone7245742012-09-05 17:12:55 -070024952 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024953 the chances of getting inlined*/
24954 switch( wdiDriverType )
24955 {
24956 case WDI_STOP_TYPE_SYS_RESET:
24957 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024958 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24959 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024960 case WDI_STOP_TYPE_RF_KILL:
24961 return HAL_STOP_TYPE_RF_KILL;
24962 }
24963
Jeff Johnsone7245742012-09-05 17:12:55 -070024964 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024965}/*WDI_2_HAL_STOP_REASON*/
24966
24967
24968/*Convert WDI scan mode type into HAL scan mode type*/
24969WPT_STATIC WPT_INLINE eHalSysMode
24970WDI_2_HAL_SCAN_MODE
24971(
24972 WDI_ScanMode wdiScanMode
24973)
24974{
Jeff Johnsone7245742012-09-05 17:12:55 -070024975 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024976 the chances of getting inlined*/
24977 switch( wdiScanMode )
24978 {
24979 case WDI_SCAN_MODE_NORMAL:
24980 return eHAL_SYS_MODE_NORMAL;
24981 case WDI_SCAN_MODE_LEARN:
24982 return eHAL_SYS_MODE_LEARN;
24983 case WDI_SCAN_MODE_SCAN:
24984 return eHAL_SYS_MODE_SCAN;
24985 case WDI_SCAN_MODE_PROMISC:
24986 return eHAL_SYS_MODE_PROMISC;
24987 case WDI_SCAN_MODE_SUSPEND_LINK:
24988 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024989 case WDI_SCAN_MODE_ROAM_SCAN:
24990 return eHAL_SYS_MODE_ROAM_SCAN;
24991 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24992 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024993 }
24994
Jeff Johnsone7245742012-09-05 17:12:55 -070024995 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024996}/*WDI_2_HAL_SCAN_MODE*/
24997
24998/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024999WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070025000WDI_2_HAL_SEC_CH_OFFSET
25001(
25002 WDI_HTSecondaryChannelOffset wdiSecChOffset
25003)
25004{
Jeff Johnsone7245742012-09-05 17:12:55 -070025005 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025006 the chances of getting inlined*/
25007 switch( wdiSecChOffset )
25008 {
25009 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025010 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025011 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025012 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070025013 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070025014 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
25015#ifdef WLAN_FEATURE_11AC
25016 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25017 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25018 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25019 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25020 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25021 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25022 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25023 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25024 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25025 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25026 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25027 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25028 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25029 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25030#endif
25031 default:
25032 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025033 }
25034
Jeff Johnsone7245742012-09-05 17:12:55 -070025035 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025036}/*WDI_2_HAL_SEC_CH_OFFSET*/
25037
25038/*Convert WDI BSS type into HAL BSS type*/
25039WPT_STATIC WPT_INLINE tSirBssType
25040WDI_2_HAL_BSS_TYPE
25041(
25042 WDI_BssType wdiBSSType
25043)
25044{
Jeff Johnsone7245742012-09-05 17:12:55 -070025045 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025046 the chances of getting inlined*/
25047 switch( wdiBSSType )
25048 {
25049 case WDI_INFRASTRUCTURE_MODE:
25050 return eSIR_INFRASTRUCTURE_MODE;
25051 case WDI_INFRA_AP_MODE:
25052 return eSIR_INFRA_AP_MODE;
25053 case WDI_IBSS_MODE:
25054 return eSIR_IBSS_MODE;
25055 case WDI_BTAMP_STA_MODE:
25056 return eSIR_BTAMP_STA_MODE;
25057 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025058 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025059 case WDI_BSS_AUTO_MODE:
25060 return eSIR_AUTO_MODE;
25061 }
25062
Jeff Johnsone7245742012-09-05 17:12:55 -070025063 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025064}/*WDI_2_HAL_BSS_TYPE*/
25065
25066/*Convert WDI NW type into HAL NW type*/
25067WPT_STATIC WPT_INLINE tSirNwType
25068WDI_2_HAL_NW_TYPE
25069(
25070 WDI_NwType wdiNWType
25071)
25072{
Jeff Johnsone7245742012-09-05 17:12:55 -070025073 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025074 the chances of getting inlined*/
25075 switch( wdiNWType )
25076 {
25077 case WDI_11A_NW_TYPE:
25078 return eSIR_11A_NW_TYPE;
25079 case WDI_11B_NW_TYPE:
25080 return eSIR_11B_NW_TYPE;
25081 case WDI_11G_NW_TYPE:
25082 return eSIR_11G_NW_TYPE;
25083 case WDI_11N_NW_TYPE:
25084 return eSIR_11N_NW_TYPE;
25085 }
25086
Jeff Johnsone7245742012-09-05 17:12:55 -070025087 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025088}/*WDI_2_HAL_NW_TYPE*/
25089
25090/*Convert WDI chanel bonding type into HAL cb type*/
25091WPT_STATIC WPT_INLINE ePhyChanBondState
25092WDI_2_HAL_CB_STATE
25093(
25094 WDI_PhyChanBondState wdiCbState
25095)
25096{
Jeff Johnsone7245742012-09-05 17:12:55 -070025097 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 the chances of getting inlined*/
25099 switch ( wdiCbState )
25100 {
25101 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25102 return PHY_SINGLE_CHANNEL_CENTERED;
25103 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25104 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25105 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25106 return PHY_DOUBLE_CHANNEL_CENTERED;
25107 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25108 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025109#ifdef WLAN_FEATURE_11AC
25110 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25111 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25112 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25113 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25114 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25115 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25116 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25117 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25118 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25119 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25120 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25121 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25122 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25123 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25124#endif
25125 case WDI_MAX_CB_STATE:
25126 default:
25127 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025129
Jeff Johnson295189b2012-06-20 16:38:30 -070025130 return PHY_CHANNEL_BONDING_STATE_MAX;
25131}/*WDI_2_HAL_CB_STATE*/
25132
25133/*Convert WDI chanel bonding type into HAL cb type*/
25134WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
25135WDI_2_HAL_HT_OPER_MODE
25136(
25137 WDI_HTOperatingMode wdiHTOperMode
25138)
25139{
Jeff Johnsone7245742012-09-05 17:12:55 -070025140 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 the chances of getting inlined*/
25142 switch ( wdiHTOperMode )
25143 {
25144 case WDI_HT_OP_MODE_PURE:
25145 return eSIR_HT_OP_MODE_PURE;
25146 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
25147 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
25148 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
25149 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
25150 case WDI_HT_OP_MODE_MIXED:
25151 return eSIR_HT_OP_MODE_MIXED;
25152 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025153
Jeff Johnson295189b2012-06-20 16:38:30 -070025154 return eSIR_HT_OP_MODE_MAX;
25155}/*WDI_2_HAL_HT_OPER_MODE*/
25156
25157/*Convert WDI mimo PS type into HAL mimo PS type*/
25158WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
25159WDI_2_HAL_MIMO_PS
25160(
25161 WDI_HTMIMOPowerSaveState wdiHTOperMode
25162)
25163{
Jeff Johnsone7245742012-09-05 17:12:55 -070025164 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 the chances of getting inlined*/
25166 switch ( wdiHTOperMode )
25167 {
25168 case WDI_HT_MIMO_PS_STATIC:
25169 return eSIR_HT_MIMO_PS_STATIC;
25170 case WDI_HT_MIMO_PS_DYNAMIC:
25171 return eSIR_HT_MIMO_PS_DYNAMIC;
25172 case WDI_HT_MIMO_PS_NA:
25173 return eSIR_HT_MIMO_PS_NA;
25174 case WDI_HT_MIMO_PS_NO_LIMIT:
25175 return eSIR_HT_MIMO_PS_NO_LIMIT;
25176 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025177
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 return eSIR_HT_MIMO_PS_MAX;
25179}/*WDI_2_HAL_MIMO_PS*/
25180
25181/*Convert WDI ENC type into HAL ENC type*/
25182WPT_STATIC WPT_INLINE tAniEdType
25183WDI_2_HAL_ENC_TYPE
25184(
25185 WDI_EncryptType wdiEncType
25186)
25187{
Jeff Johnsone7245742012-09-05 17:12:55 -070025188 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 the chances of getting inlined*/
25190 switch ( wdiEncType )
25191 {
25192 case WDI_ENCR_NONE:
25193 return eSIR_ED_NONE;
25194
25195 case WDI_ENCR_WEP40:
25196 return eSIR_ED_WEP40;
25197
25198 case WDI_ENCR_WEP104:
25199 return eSIR_ED_WEP104;
25200
25201 case WDI_ENCR_TKIP:
25202 return eSIR_ED_TKIP;
25203
25204 case WDI_ENCR_CCMP:
25205 return eSIR_ED_CCMP;
25206
25207 case WDI_ENCR_AES_128_CMAC:
25208 return eSIR_ED_AES_128_CMAC;
25209#if defined(FEATURE_WLAN_WAPI)
25210 case WDI_ENCR_WPI:
25211 return eSIR_ED_WPI;
25212#endif
25213 default:
25214 return eSIR_ED_NOT_IMPLEMENTED;
25215 }
25216
25217}/*WDI_2_HAL_ENC_TYPE*/
25218
25219/*Convert WDI WEP type into HAL WEP type*/
25220WPT_STATIC WPT_INLINE tAniWepType
25221WDI_2_HAL_WEP_TYPE
25222(
25223 WDI_WepType wdiWEPType
25224)
25225{
Jeff Johnsone7245742012-09-05 17:12:55 -070025226 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025227 the chances of getting inlined*/
25228 switch ( wdiWEPType )
25229 {
25230 case WDI_WEP_STATIC:
25231 return eSIR_WEP_STATIC;
25232
25233 case WDI_WEP_DYNAMIC:
25234 return eSIR_WEP_DYNAMIC;
25235 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025236
Jeff Johnson295189b2012-06-20 16:38:30 -070025237 return eSIR_WEP_MAX;
25238}/*WDI_2_HAL_WEP_TYPE*/
25239
25240WPT_STATIC WPT_INLINE tSirLinkState
25241WDI_2_HAL_LINK_STATE
25242(
25243 WDI_LinkStateType wdiLinkState
25244)
25245{
Jeff Johnsone7245742012-09-05 17:12:55 -070025246 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025247 the chances of getting inlined*/
25248 switch ( wdiLinkState )
25249 {
25250 case WDI_LINK_IDLE_STATE:
25251 return eSIR_LINK_IDLE_STATE;
25252
25253 case WDI_LINK_PREASSOC_STATE:
25254 return eSIR_LINK_PREASSOC_STATE;
25255
25256 case WDI_LINK_POSTASSOC_STATE:
25257 return eSIR_LINK_POSTASSOC_STATE;
25258
25259 case WDI_LINK_AP_STATE:
25260 return eSIR_LINK_AP_STATE;
25261
25262 case WDI_LINK_IBSS_STATE:
25263 return eSIR_LINK_IBSS_STATE;
25264
25265 case WDI_LINK_BTAMP_PREASSOC_STATE:
25266 return eSIR_LINK_BTAMP_PREASSOC_STATE;
25267
25268 case WDI_LINK_BTAMP_POSTASSOC_STATE:
25269 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
25270
25271 case WDI_LINK_BTAMP_AP_STATE:
25272 return eSIR_LINK_BTAMP_AP_STATE;
25273
25274 case WDI_LINK_BTAMP_STA_STATE:
25275 return eSIR_LINK_BTAMP_STA_STATE;
25276
25277 case WDI_LINK_LEARN_STATE:
25278 return eSIR_LINK_LEARN_STATE;
25279
25280 case WDI_LINK_SCAN_STATE:
25281 return eSIR_LINK_SCAN_STATE;
25282
25283 case WDI_LINK_FINISH_SCAN_STATE:
25284 return eSIR_LINK_FINISH_SCAN_STATE;
25285
25286 case WDI_LINK_INIT_CAL_STATE:
25287 return eSIR_LINK_INIT_CAL_STATE;
25288
25289 case WDI_LINK_FINISH_CAL_STATE:
25290 return eSIR_LINK_FINISH_CAL_STATE;
25291
Jeff Johnson295189b2012-06-20 16:38:30 -070025292 case WDI_LINK_LISTEN_STATE:
25293 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025294
Gopichand Nakkala924e4552013-05-08 19:18:14 +053025295 case WDI_LINK_SEND_ACTION_STATE:
25296 return eSIR_LINK_SEND_ACTION_STATE;
25297
Jeff Johnson295189b2012-06-20 16:38:30 -070025298 default:
25299 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070025300 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025301}
25302
Jeff Johnsone7245742012-09-05 17:12:55 -070025303/*Translate a STA Context from WDI into HAL*/
25304WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025305void
25306WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025307(
Jeff Johnson295189b2012-06-20 16:38:30 -070025308 tConfigStaParams* phalConfigSta,
25309 WDI_ConfigStaReqInfoType* pwdiConfigSta
25310)
25311{
25312 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025313#ifdef WLAN_FEATURE_11AC
25314 /* Get the Version 1 Handler */
25315 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25316 if (WDI_getFwWlanFeatCaps(DOT11AC))
25317 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025318 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025319 }
25320#endif
25321 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025322 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025323
Jeff Johnsone7245742012-09-05 17:12:55 -070025324 wpalMemoryCopy(phalConfigSta->bssId,
25325 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25326
25327 wpalMemoryCopy(phalConfigSta->staMac,
25328 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025329
25330 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25331 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25332 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25333 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25334 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25335 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25336 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25337 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25338 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25339 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25340 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25341 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25342 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25343 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25344 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25345 phalConfigSta->action = pwdiConfigSta->wdiAction;
25346 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25347 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25348 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25349 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25350 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25351 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25352 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025353
Jeff Johnson295189b2012-06-20 16:38:30 -070025354 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25355
Jeff Johnsone7245742012-09-05 17:12:55 -070025356 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025357 pwdiConfigSta->wdiSupportedRates.opRateMode;
25358 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25359 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025360 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025361 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25362 }
25363 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25364 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025365 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025366 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25367 }
25368 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25369 {
25370 phalConfigSta->supportedRates.aniLegacyRates[i] =
25371 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25372 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025373 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025374 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25375 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25376 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025377 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025378 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25379 }
25380 phalConfigSta->supportedRates.rxHighestDataRate =
25381 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25382
Jeff Johnsone7245742012-09-05 17:12:55 -070025383#ifdef WLAN_FEATURE_11AC
25384 if(phalConfigSta_V1 != NULL)
25385 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025386 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25387 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25388 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25389 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025390 }
25391#endif
25392
Jeff Johnson295189b2012-06-20 16:38:30 -070025393 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025394
Jeff Johnsone7245742012-09-05 17:12:55 -070025395#ifdef WLAN_FEATURE_11AC
25396 if(phalConfigSta_V1 != NULL)
25397 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025398 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25399 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025400 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025401 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025402 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25403 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25404
Jeff Johnsone7245742012-09-05 17:12:55 -070025405 }
25406#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025407}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025408
25409/*Translate a Rate set info from WDI into HAL*/
25410WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025411WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025412(
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 tSirMacRateSet* pHalRateSet,
25414 WDI_RateSet* pwdiRateSet
25415)
25416{
Jeff Johnsone7245742012-09-05 17:12:55 -070025417 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25419
25420 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25421 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25422
25423 for ( i = 0; i < pHalRateSet->numRates; i++ )
25424 {
25425 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25426 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025427
Jeff Johnson295189b2012-06-20 16:38:30 -070025428}/*WDI_CopyWDIRateSetToHALRateSet*/
25429
25430
25431/*Translate an EDCA Parameter Record from WDI into HAL*/
25432WPT_STATIC WPT_INLINE void
25433WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025434(
Jeff Johnson295189b2012-06-20 16:38:30 -070025435 tSirMacEdcaParamRecord* phalEdcaParam,
25436 WDI_EdcaParamRecord* pWDIEdcaParam
25437)
25438{
Jeff Johnsone7245742012-09-05 17:12:55 -070025439 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025440 the chances of getting inlined*/
25441
25442 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25443 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25444 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25445 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25446
25447 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25448 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25449 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25450}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25451
25452
25453/*Copy a management frame header from WDI fmt into HAL fmt*/
25454WPT_STATIC WPT_INLINE void
25455WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25456(
25457 tSirMacMgmtHdr* pmacMgmtHdr,
25458 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25459)
25460{
25461 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25462 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25463 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25464 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25465 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25466 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25467 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25468 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25469 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25470 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25471 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25472
25473 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25474 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25475
Jeff Johnsone7245742012-09-05 17:12:55 -070025476 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025477 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025478 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025479 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025480 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025481 pwdiMacMgmtHdr->bssId, 6);
25482
25483 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25484 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25485 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25486
25487}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25488
25489
25490/*Copy config bss parameters from WDI fmt into HAL fmt*/
25491WPT_STATIC WPT_INLINE void
25492WDI_CopyWDIConfigBSSToHALConfigBSS
25493(
25494 tConfigBssParams* phalConfigBSS,
25495 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25496)
25497{
25498
25499 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025500#ifdef WLAN_FEATURE_11AC
25501 /* Get the Version 1 Handler */
25502 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25503 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025504 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025505#endif
25506
Jeff Johnson295189b2012-06-20 16:38:30 -070025507 wpalMemoryCopy( phalConfigBSS->bssId,
25508 pwdiConfigBSS->macBSSID,
25509 WDI_MAC_ADDR_LEN);
25510
25511#ifdef HAL_SELF_STA_PER_BSS
25512 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25513 pwdiConfigBSS->macSelfAddr,
25514 WDI_MAC_ADDR_LEN);
25515#endif
25516
25517 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25518
25519 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25520 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25521
Jeff Johnsone7245742012-09-05 17:12:55 -070025522 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 pwdiConfigBSS->ucShortSlotTimeSupported;
25524 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25525 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25526 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25527 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25528 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025529 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25531 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25532 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25533 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25534 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25535 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25536 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25537 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25538 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25539 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25540 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25541
Jeff Johnsone7245742012-09-05 17:12:55 -070025542 phalConfigBSS->htOperMode =
25543 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025544
25545 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25546 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25547 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25548 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25549
25550#ifdef WLAN_FEATURE_VOWIFI
25551 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25552#endif
25553
25554 /*! Used 32 as magic number because that is how the ssid is declared inside the
25555 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025556 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025557 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25558 pwdiConfigBSS->wdiSSID.ucLength : 32;
25559 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025560 pwdiConfigBSS->wdiSSID.sSSID,
25561 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025562
25563 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25564 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025565
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25567 &pwdiConfigBSS->wdiRateSet);
25568
25569 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25570
25571 if(phalConfigBSS->edcaParamsValid)
25572 {
25573 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25574 &pwdiConfigBSS->wdiBEEDCAParams);
25575 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25576 &pwdiConfigBSS->wdiBKEDCAParams);
25577 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25578 &pwdiConfigBSS->wdiVIEDCAParams);
25579 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25580 &pwdiConfigBSS->wdiVOEDCAParams);
25581 }
25582
Jeff Johnsone7245742012-09-05 17:12:55 -070025583 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025584
25585 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25586
25587#ifdef WLAN_FEATURE_VOWIFI_11R
25588
Jeff Johnsone7245742012-09-05 17:12:55 -070025589 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025591
Jeff Johnson295189b2012-06-20 16:38:30 -070025592 if( phalConfigBSS->extSetStaKeyParamValid )
25593 {
25594 /*-----------------------------------------------------------------------
25595 Copy the STA Key parameters into the HAL message
25596 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025597 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25599
Jeff Johnsone7245742012-09-05 17:12:55 -070025600 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025601 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25602
25603 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25604
25605 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25606
25607 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25608
Jeff Johnson295189b2012-06-20 16:38:30 -070025609 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25610 keyIndex++)
25611 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25614 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25615 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25616 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25617 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25618 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025619 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025620 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025621 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025622 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025623 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025624 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25625 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025626 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025627 WDI_MAX_KEY_LENGTH);
25628 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025629 }
25630 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25631 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025632 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 sizeof(phalConfigBSS->extSetStaKeyParam) );
25634 }
25635
25636#endif /*WLAN_FEATURE_VOWIFI_11R*/
25637
Jeff Johnsone7245742012-09-05 17:12:55 -070025638#ifdef WLAN_FEATURE_11AC
25639 if(phalConfigBSS_V1 != NULL)
25640 {
25641 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25642 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25643 }
25644#endif
25645
Jeff Johnson295189b2012-06-20 16:38:30 -070025646}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25647
25648
Jeff Johnsone7245742012-09-05 17:12:55 -070025649/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025650 pointed to by user data */
25651WPT_STATIC WPT_INLINE void
25652WDI_ExtractRequestCBFromEvent
25653(
25654 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025655 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025656 void** ppUserData
25657)
25658{
25659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25660 switch ( pEvent->wdiRequest )
25661 {
25662 case WDI_START_REQ:
25663 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25664 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25665 break;
25666 case WDI_STOP_REQ:
25667 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25668 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25669 break;
25670 case WDI_INIT_SCAN_REQ:
25671 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25672 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25673 break;
25674 case WDI_START_SCAN_REQ:
25675 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25676 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25677 break;
25678 case WDI_END_SCAN_REQ:
25679 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25680 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25681 break;
25682 case WDI_FINISH_SCAN_REQ:
25683 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25684 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25685 break;
25686 case WDI_JOIN_REQ:
25687 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25688 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25689 break;
25690 case WDI_CONFIG_BSS_REQ:
25691 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25692 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25693 break;
25694 case WDI_DEL_BSS_REQ:
25695 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25696 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25697 break;
25698 case WDI_POST_ASSOC_REQ:
25699 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25700 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25701 break;
25702 case WDI_DEL_STA_REQ:
25703 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25704 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25705 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025706
25707 case WDI_ADD_STA_SELF_REQ:
25708 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25709 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25710 break;
25711
Jeff Johnson295189b2012-06-20 16:38:30 -070025712 case WDI_DEL_STA_SELF_REQ:
25713 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25714 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25715 break;
25716
25717 case WDI_SET_BSS_KEY_REQ:
25718 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25719 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25720 break;
25721 case WDI_RMV_BSS_KEY_REQ:
25722 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25723 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25724 break;
25725 case WDI_SET_STA_KEY_REQ:
25726 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25727 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25728 break;
25729 case WDI_RMV_STA_KEY_REQ:
25730 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25731 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25732 break;
25733 case WDI_ADD_TS_REQ:
25734 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25735 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25736 break;
25737 case WDI_DEL_TS_REQ:
25738 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25739 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25740 break;
25741 case WDI_UPD_EDCA_PRMS_REQ:
25742 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25743 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25744 break;
25745 case WDI_ADD_BA_SESSION_REQ:
25746 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25747 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25748 break;
25749 case WDI_DEL_BA_REQ:
25750 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25751 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25752 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025753#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025754 case WDI_TSM_STATS_REQ:
25755 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25756 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25757 break;
25758#endif
25759 case WDI_CH_SWITCH_REQ:
25760 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25761 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25762 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025763 case WDI_CH_SWITCH_REQ_V1:
25764 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25765 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25766 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 case WDI_CONFIG_STA_REQ:
25768 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25769 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25770 break;
25771 case WDI_SET_LINK_ST_REQ:
25772 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25773 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25774 break;
25775 case WDI_GET_STATS_REQ:
25776 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25777 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25778 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025779#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025780 case WDI_GET_ROAM_RSSI_REQ:
25781 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25782 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25783 break;
25784#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025785 case WDI_UPDATE_CFG_REQ:
25786 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25787 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25788 break;
25789 case WDI_ADD_BA_REQ:
25790 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25791 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25792 break;
25793 case WDI_TRIGGER_BA_REQ:
25794 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25795 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25796 break;
25797 case WDI_UPD_BCON_PRMS_REQ:
25798 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25799 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25800 break;
25801 case WDI_SND_BCON_REQ:
25802 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25803 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25804 break;
25805 case WDI_ENTER_BMPS_REQ:
25806 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25807 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25808 break;
25809 case WDI_EXIT_BMPS_REQ:
25810 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25811 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25812 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025813 case WDI_ENTER_IMPS_REQ:
25814 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25815 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25816 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025817 case WDI_ENTER_UAPSD_REQ:
25818 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25819 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25820 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025821 case WDI_EXIT_UAPSD_REQ:
25822 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25823 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25824 break;
25825 case WDI_SET_UAPSD_PARAM_REQ:
25826 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25827 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25828 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025829 case WDI_UPDATE_UAPSD_PARAM_REQ:
25830 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25831 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25832 break;
25833 case WDI_CONFIGURE_RXP_FILTER_REQ:
25834 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25835 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25836 break;
25837 case WDI_SET_BEACON_FILTER_REQ:
25838 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25839 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25840 break;
25841 case WDI_REM_BEACON_FILTER_REQ:
25842 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25843 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025844 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 case WDI_SET_RSSI_THRESHOLDS_REQ:
25846 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25847 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25848 break;
25849 case WDI_HOST_OFFLOAD_REQ:
25850 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25851 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25852 break;
25853 case WDI_WOWL_ADD_BC_PTRN_REQ:
25854 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25855 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25856 break;
25857 case WDI_WOWL_DEL_BC_PTRN_REQ:
25858 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25859 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25860 break;
25861 case WDI_WOWL_ENTER_REQ:
25862 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25863 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25864 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025865 case WDI_WOWL_EXIT_REQ:
25866 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25867 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25868 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025869 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25870 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25871 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25872 break;
25873 case WDI_FLUSH_AC_REQ:
25874 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25875 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25876 break;
25877 case WDI_BTAMP_EVENT_REQ:
25878 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25879 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25880 break;
25881 case WDI_KEEP_ALIVE_REQ:
25882 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25883 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25884 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025885#if defined FEATURE_WLAN_SCAN_PNO
25886 case WDI_SET_PREF_NETWORK_REQ:
25887 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25888 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25889 break;
25890 case WDI_SET_RSSI_FILTER_REQ:
25891 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25892 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25893 break;
25894 case WDI_UPDATE_SCAN_PARAMS_REQ:
25895 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25896 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25897 break;
25898#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 case WDI_SET_TX_PER_TRACKING_REQ:
25900 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25901 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025902 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025903#if defined WLAN_FEATURE_PACKET_FILTERING
25904 case WDI_8023_MULTICAST_LIST_REQ:
25905 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25906 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25907 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025908 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25909 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25910 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25911 break;
25912 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25913 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25914 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25915 break;
25916 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25917 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25918 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25919 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025920#endif
25921 case WDI_SET_POWER_PARAMS_REQ:
25922 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25923 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25924 break;
25925#if defined WLAN_FEATURE_GTK_OFFLOAD
25926 case WDI_GTK_OFFLOAD_REQ:
25927 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25928 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25929 break;
25930 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25931 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25932 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25933 break;
25934#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025935
Jeff Johnson295189b2012-06-20 16:38:30 -070025936 default:
25937 *ppfnReqCB = NULL;
25938 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025939 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025940 }
25941}/*WDI_ExtractRequestCBFromEvent*/
25942
25943
25944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025945 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025946 frame xtl is enabled for a particular STA.
25947
25948 WDI_PostAssocReq must have been called.
25949
Jeff Johnsone7245742012-09-05 17:12:55 -070025950 @param uSTAIdx: STA index
25951
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 @see WDI_PostAssocReq
25953 @return Result of the function call
25954*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025955wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025956WDI_IsHwFrameTxTranslationCapable
25957(
25958 wpt_uint8 uSTAIdx
25959)
25960{
Jeff Johnsone7245742012-09-05 17:12:55 -070025961 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 uma value*/
25963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 ------------------------------------------------------------------------*/
25966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25967 {
25968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25969 "WDI API call before module is initialized - Fail request");
25970
Jeff Johnsone7245742012-09-05 17:12:55 -070025971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 }
25973
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025974#ifdef WLAN_SOFTAP_VSTA_FEATURE
25975 if (IS_VSTA_IDX(uSTAIdx))
25976 {
25977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25978 "STA %d is a Virtual STA, "
25979 "HW frame translation disabled", uSTAIdx);
25980 return eWLAN_PAL_FALSE;
25981 }
25982#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025983
Jeff Johnson295189b2012-06-20 16:38:30 -070025984 return gWDICb.bFrameTransEnabled;
25985}/*WDI_IsHwFrameTxTranslationCapable*/
25986
Katya Nigam6201c3e2014-05-27 17:51:42 +053025987
25988/**
25989 @brief WDI_IsSelfSTA - check if staid is self sta index
25990
25991
25992 @param pWDICtx: pointer to the WLAN DAL context
25993 ucSTAIdx: station index
25994
25995 @return Result of the function call
25996*/
25997wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25998{
25999 wpt_uint8 ucSTAType;
26000
26001 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
26002 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
26003 {
26004 if( ucSTAType == WDI_STA_ENTRY_SELF )
26005 return eWLAN_PAL_TRUE;
26006 }
26007
26008 return eWLAN_PAL_FALSE;
26009}
26010
26011
26012
Jeff Johnson295189b2012-06-20 16:38:30 -070026013#ifdef FEATURE_WLAN_SCAN_PNO
26014/**
26015 @brief WDI_SetPreferredNetworkList
26016
Jeff Johnsone7245742012-09-05 17:12:55 -070026017 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026018 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026019
Jeff Johnson295189b2012-06-20 16:38:30 -070026020 wdiPNOScanCb: callback for passing back the response
26021 of the Set PNO operation received from the
26022 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026023
Jeff Johnson295189b2012-06-20 16:38:30 -070026024 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026025 callback
26026
Jeff Johnson295189b2012-06-20 16:38:30 -070026027 @return Result of the function call
26028*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026029WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026030WDI_SetPreferredNetworkReq
26031(
26032 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26033 WDI_PNOScanCb wdiPNOScanCb,
26034 void* pUserData
26035)
26036{
26037 WDI_EventInfoType wdiEventData = {{0}};
26038 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26039
26040 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026041 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026042 ------------------------------------------------------------------------*/
26043 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26044 {
26045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26046 "WDI API call before module is initialized - Fail request");
26047
Jeff Johnsone7245742012-09-05 17:12:55 -070026048 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026049 }
26050
26051 /*------------------------------------------------------------------------
26052 Fill in Event data and post to the Main FSM
26053 ------------------------------------------------------------------------*/
26054 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026055 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026056 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026057 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026058 wdiEventData.pUserData = pUserData;
26059
26060 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26061}
26062
26063
26064/**
26065 @brief WDI_SetRssiFilterReq
26066
Jeff Johnsone7245742012-09-05 17:12:55 -070026067 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026068 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026069
Jeff Johnson295189b2012-06-20 16:38:30 -070026070 wdiRssiFilterCb: callback for passing back the response
26071 of the Set RSSI Filter operation received from the
26072 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026073
Jeff Johnson295189b2012-06-20 16:38:30 -070026074 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026075 callback
26076
Jeff Johnson295189b2012-06-20 16:38:30 -070026077 @return Result of the function call
26078*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026079WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026080WDI_SetRssiFilterReq
26081(
26082 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26083 WDI_RssiFilterCb wdiRssiFilterCb,
26084 void* pUserData
26085)
26086{
26087 WDI_EventInfoType wdiEventData = {{0}};
26088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26089
26090 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026092 ------------------------------------------------------------------------*/
26093 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26094 {
26095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26096 "WDI API call before module is initialized - Fail request");
26097
Jeff Johnsone7245742012-09-05 17:12:55 -070026098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 }
26100
26101 /*------------------------------------------------------------------------
26102 Fill in Event data and post to the Main FSM
26103 ------------------------------------------------------------------------*/
26104 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026105 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026106 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026107 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026108 wdiEventData.pUserData = pUserData;
26109
26110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26111}/*WDI_SetRssiFilterReq*/
26112
26113/**
26114 @brief WDI_UpdateScanParamsReq
26115
Jeff Johnsone7245742012-09-05 17:12:55 -070026116 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026117 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026118
Jeff Johnson295189b2012-06-20 16:38:30 -070026119 wdiUpdateScanParamsCb: callback for passing back the response
26120 of the Set PNO operation received from the
26121 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026122
Jeff Johnson295189b2012-06-20 16:38:30 -070026123 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026124 callback
26125
Jeff Johnson295189b2012-06-20 16:38:30 -070026126 @return Result of the function call
26127*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026128WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026129WDI_UpdateScanParamsReq
26130(
26131 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
26132 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
26133 void* pUserData
26134)
26135{
26136 WDI_EventInfoType wdiEventData = {{0}};
26137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26138
26139 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026140 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026141 ------------------------------------------------------------------------*/
26142 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26143 {
26144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26145 "WDI API call before module is initialized - Fail request");
26146
Jeff Johnsone7245742012-09-05 17:12:55 -070026147 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 }
26149
26150 /*------------------------------------------------------------------------
26151 Fill in Event data and post to the Main FSM
26152 ------------------------------------------------------------------------*/
26153 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026154 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026155 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026156 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026157 wdiEventData.pUserData = pUserData;
26158
26159 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26160}
26161
26162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026163 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026165
26166 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026167 pwdiPNOScanReqParams: pointer to the info received
26168 from upper layers
26169 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026170 and its size
26171
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 @return Result of the function call
26173*/
26174
26175WDI_Status
26176WDI_PackPreferredNetworkList
26177(
26178 WDI_ControlBlockType* pWDICtx,
26179 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26180 wpt_uint8** ppSendBuffer,
26181 wpt_uint16* pSize
26182)
26183{
Jeff Johnsone7245742012-09-05 17:12:55 -070026184 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026185 wpt_uint16 usDataOffset = 0;
26186 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026187 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026188 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026189 /*-----------------------------------------------------------------------
26190 Get message buffer
26191 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026192 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026193 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026194 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026195 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026196 {
26197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026198 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026199 pwdiPNOScanReqParams);
26200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026202 }
26203
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026204 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
26205
Jeff Johnson295189b2012-06-20 16:38:30 -070026206 /*-------------------------------------------------------------------------
26207 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26208 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026209 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026210 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026211 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026212 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26213
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026214 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026215 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026217 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026218 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26219
26220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026221 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26223 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26224 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26225
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026226 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026227 {
26228 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026229 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26231
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026232 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026233 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026234 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026235
26236 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026237 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026238 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026239
26240 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026241 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026242 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026243
Jeff Johnsone7245742012-09-05 17:12:55 -070026244 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026245 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026246 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070026247 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
26248 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26249 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
26250 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026251
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026252 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026253 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026254 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026255
26256 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026257 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026258 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26259
26260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026261 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026262 pPrefNetwListParams->aNetworks[i].ssId.length,
26263 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 }
26265
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026266 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026267 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026268 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26269 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26270 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26271
26272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026273 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026274 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026275 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26276 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26277
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026278 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026279 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026280 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026281 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026282 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026283 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26284 }
26285
26286 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026287 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026288 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26289 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26290 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026291 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026292
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026293 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026294 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026295 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026296
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026297 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026298 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26299 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26300 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026301 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026302
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026303 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026304 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026305 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026306
26307 /*Set the output values*/
26308 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026309 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026310
26311 return WDI_STATUS_SUCCESS;
26312}/*WDI_PackPreferredNetworkList*/
26313
26314/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026315 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026316 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026317
26318 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026319 pwdiPNOScanReqParams: pointer to the info received
26320 from upper layers
26321 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026322 and its size
26323
Jeff Johnson295189b2012-06-20 16:38:30 -070026324 @return Result of the function call
26325*/
26326
26327WDI_Status
26328WDI_PackPreferredNetworkListNew
26329(
26330 WDI_ControlBlockType* pWDICtx,
26331 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26332 wpt_uint8** ppSendBuffer,
26333 wpt_uint16* pSize
26334)
26335{
Jeff Johnsone7245742012-09-05 17:12:55 -070026336 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026337 wpt_uint16 usDataOffset = 0;
26338 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026339 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026340 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026341
26342 /*-----------------------------------------------------------------------
26343 Get message buffer
26344 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026345 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026346 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026347 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026348 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026349 {
26350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026351 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026352 pwdiPNOScanReqParams);
26353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026355 }
26356
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026357 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26358
Jeff Johnson295189b2012-06-20 16:38:30 -070026359 /*-------------------------------------------------------------------------
26360 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26361 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026362 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026363 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026364 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026365 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26366
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026367 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026368 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026369 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026370 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026371 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26372
26373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026374 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026375 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26376 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26377 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26378
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026379 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 {
26381 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026382 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026383 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26384
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026385 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026386 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026387 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026388
26389 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026390 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026391 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026392
26393 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026394 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026395 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026396
26397 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026398 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026399 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026400
Jeff Johnsone7245742012-09-05 17:12:55 -070026401 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026402 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026403 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026404 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26405
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026406 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026407 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026408 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026409
26410 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026411 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026412 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26413
26414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026415 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026416 pPrefNetwListParams->aNetworks[i].ssId.length,
26417 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026418 }
26419
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026420 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026421 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026422 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26423 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26424 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26425
26426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026427 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026428 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026429 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26430 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26431
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026432 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026433 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026434 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026435 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026436 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026437 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26438 }
26439
26440 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026441 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26443 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26444 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026445 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026446
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026447 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026448 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026449 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026450
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026451 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026452 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26453 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26454 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026455 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026456
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026457 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026458 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026459 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026460
Jeff Johnson295189b2012-06-20 16:38:30 -070026461
26462 /*Set the output values*/
26463 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026464 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026465
26466 return WDI_STATUS_SUCCESS;
26467}/*WDI_PackPreferredNetworkListNew*/
26468
26469/**
26470 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026471
26472 @param pWDICtx: pointer to the WLAN DAL context
26473 pEventData: pointer to the event information structure
26474
Jeff Johnson295189b2012-06-20 16:38:30 -070026475 @return Result of the function call
26476*/
26477WDI_Status
26478WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026479(
Jeff Johnson295189b2012-06-20 16:38:30 -070026480 WDI_ControlBlockType* pWDICtx,
26481 WDI_EventInfoType* pEventData
26482)
26483{
26484 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26485 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026486 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026487 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026488 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026489
26490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026492 -------------------------------------------------------------------------*/
26493 if (( NULL == pEventData ) ||
26494 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26495 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26496 {
26497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026501 }
26502
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026503 /*----------------------------------------------------------------------
26504 Avoid Enable PNO during any active session or an ongoing session
26505 ----------------------------------------------------------------------*/
26506 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26507 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26508 {
26509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26510 "%s:(Active/Ongoing Session) - Fail request", __func__);
26511
26512 return WDI_STATUS_E_FAILURE;
26513 }
26514
Jeff Johnson295189b2012-06-20 16:38:30 -070026515 /*-------------------------------------------------------------------------
26516 Pack the PNO request structure based on version
26517 -------------------------------------------------------------------------*/
26518 if ( pWDICtx->wdiPNOVersion > 0 )
26519 {
26520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026521 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026522 pWDICtx->wdiPNOVersion);
26523
26524 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26525 &pSendBuffer, &usSendSize);
26526 }
26527 else
26528 {
26529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026530 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026531 pWDICtx->wdiPNOVersion);
26532
26533 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26534 &pSendBuffer, &usSendSize);
26535 }
26536
26537 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26538 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26539 {
26540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026541 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026543 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026544 }
26545
26546 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026547 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026548
26549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026550 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026551 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026552 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26553 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026554}
26555
26556/**
26557 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026558
26559 @param pWDICtx: pointer to the WLAN DAL context
26560 pEventData: pointer to the event information structure
26561
Jeff Johnson295189b2012-06-20 16:38:30 -070026562 @see
26563 @return Result of the function call
26564*/
26565WDI_Status
26566WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026567(
Jeff Johnson295189b2012-06-20 16:38:30 -070026568 WDI_ControlBlockType* pWDICtx,
26569 WDI_EventInfoType* pEventData
26570)
26571{
26572 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26573 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026575 wpt_uint16 usDataOffset = 0;
26576 wpt_uint16 usSendSize = 0;
26577 wpt_uint8 ucRssiThreshold;
26578
26579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026581 -------------------------------------------------------------------------*/
26582 if (( NULL == pEventData ) ||
26583 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26584 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26585 {
26586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026590 }
26591
26592 /*-----------------------------------------------------------------------
26593 Get message buffer
26594 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026596 sizeof(ucRssiThreshold),
26597 &pSendBuffer, &usDataOffset, &usSendSize))||
26598 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26599 {
26600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026601 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026602 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026605 }
26606
26607 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26608
Jeff Johnsone7245742012-09-05 17:12:55 -070026609 wpalMemoryCopy( pSendBuffer+usDataOffset,
26610 &ucRssiThreshold,
26611 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026612
26613 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026614 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026615
26616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026617 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26620 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026621}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026622#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26623/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026624 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026625
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026626 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026627 by the Device Interface
26628
26629 wdiRoamOffloadScancb: callback for passing back the response
26630 of the Roam Candidate Lookup Req operation received from the
26631 device
26632
26633 pUserData: user data will be passed back with the
26634 callback
26635 @return Result of the function call
26636*/
26637WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026638WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026639(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026640 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026641 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26642 void* pUserData
26643)
26644{
26645 WDI_EventInfoType wdiEventData = {{0}};
26646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26647
26648 /*------------------------------------------------------------------------
26649 Sanity Check
26650 ------------------------------------------------------------------------*/
26651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26652 {
26653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26654 "WDI API call before module is initialized - Fail request");
26655
26656 return WDI_STATUS_E_NOT_ALLOWED;
26657 }
26658
26659 /*------------------------------------------------------------------------
26660 Fill in Event data and post to the Main FSM
26661 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026662 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26663 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26664 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026665 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26666 wdiEventData.pUserData = pUserData;
26667
26668 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26669}
26670
26671void
26672WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26673{
26674 switch (wdiEdType)
26675 {
26676 case WDI_ED_NONE:
26677 *EdType = eED_NONE;
26678 break;
26679 case WDI_ED_WEP40:
26680 case WDI_ED_WEP104:
26681 *EdType = eED_WEP;
26682 break;
26683 case WDI_ED_TKIP:
26684 *EdType = eED_TKIP;
26685 break;
26686 case WDI_ED_CCMP:
26687#ifdef WLAN_FEATURE_11W
26688 case WDI_ED_AES_128_CMAC:
26689#endif
26690 *EdType = eED_CCMP;
26691 break;
26692#ifdef FEATURE_WLAN_WAPI
26693 case WDI_ED_WPI:
26694 *EdType = eED_WPI;
26695 break;
26696#endif
26697 case WDI_ED_ANY:
26698 *EdType = eED_ANY;
26699 break;
26700
26701 default:
26702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26703 "%s: Unknown Encryption Type", __func__);
26704 break;
26705 }
26706}
26707
26708/**
26709 @brief Helper function to pack Start Roam Candidate Lookup
26710 Request parameters
26711
26712 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026713 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026714 from upper layers
26715 ppSendBuffer, pSize - out pointers of the packed buffer
26716 and its size
26717
26718 @return Result of the function call
26719*/
26720
26721WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026722WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026723(
26724 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026725 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026726 wpt_uint8** ppSendBuffer,
26727 wpt_uint16* pSize
26728)
26729{
26730 wpt_uint8* pSendBuffer = NULL;
26731 wpt_uint16 usDataOffset = 0;
26732 wpt_uint16 usSendSize = 0;
26733 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26734 wpt_uint8 i;
26735 /*-----------------------------------------------------------------------
26736 Get message buffer
26737 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026739 sizeof(tRoamCandidateListParams),
26740 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026741 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026742 {
26743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026744 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026745 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026746 WDI_ASSERT(0);
26747 return WDI_STATUS_E_FAILURE;
26748 }
26749 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026750 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026751 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026752 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026753 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026754 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026755 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026756 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026757 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026758 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026759 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026760
26761 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026762 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026763 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026764 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026765 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26766 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026767 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26768 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26769 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26770 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26771 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026772 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026773 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026774 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026775 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26776 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26777 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26778 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26779 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26780 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26781 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026782 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026783 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026784 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26785 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26786 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026787
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26789 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26790 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26791 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26792 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26793 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026794 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026795 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26796 pRoamCandidateListParams->RoamScanOffloadEnabled,
26797 pRoamCandidateListParams->Command,
26798 pRoamCandidateListParams->StartScanReason,
26799 pRoamCandidateListParams->NeighborScanTimerPeriod,
26800 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26801 pRoamCandidateListParams->NeighborScanChannelMinTime,
26802 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26803 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26804 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26805 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26806 pRoamCandidateListParams->ConnectedNetwork.authentication,
26807 pRoamCandidateListParams->ConnectedNetwork.encryption,
26808 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26809 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26810 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026811 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026812 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026813 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026814 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026815 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26816 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026817 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026818 pRoamCandidateListParams->us24GProbeSize);
26819 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026820 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026821 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026822 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026823 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26824 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026825 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026826 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026827 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26828 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26829 pRoamCandidateListParams->nProbes =
26830 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26831 pRoamCandidateListParams->HomeAwayTime =
26832 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026834 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26835 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026837 }
26838
26839
26840 /*Set the output values*/
26841 *ppSendBuffer = pSendBuffer;
26842 *pSize = usSendSize;
26843 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026844}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026845
26846/**
26847 @brief Process Start Roam Candidate Lookup Request function
26848
26849 @param pWDICtx: pointer to the WLAN DAL context
26850 pEventData: pointer to the event information structure
26851
26852 @return Result of the function call
26853*/
26854WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026855WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026856(
26857 WDI_ControlBlockType* pWDICtx,
26858 WDI_EventInfoType* pEventData
26859)
26860{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026861 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026862 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26863 wpt_uint8* pSendBuffer = NULL;
26864 wpt_uint16 usSendSize = 0;
26865 WDI_Status wdiStatus;
26866 /*-------------------------------------------------------------------------
26867 Sanity check
26868 -------------------------------------------------------------------------*/
26869 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026870 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026871 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26872 {
26873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26874 "%s: Invalid parameters", __func__);
26875 WDI_ASSERT(0);
26876 return WDI_STATUS_E_FAILURE;
26877 }
26878
26879 /*-------------------------------------------------------------------------
26880 Pack the Start Roam Candidate Lookup request structure based on version
26881 -------------------------------------------------------------------------*/
26882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26883 "%s: Packing Roam Candidate Lookup request ", __func__);
26884
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026885 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026886 &pSendBuffer, &usSendSize);
26887
26888 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26889 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26890 {
26891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26892 "%s: failed to pack request parameters", __func__);
26893 WDI_ASSERT(0);
26894 return wdiStatus;
26895 }
26896
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026897 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26898 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026899
26900 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026901 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026902 -------------------------------------------------------------------------*/
26903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026904 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026905}
26906
26907/**
26908 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26909 response is being received over the bus from HAL)
26910
26911 @param pWDICtx: pointer to the WLAN DAL context
26912 pEventData: pointer to the event information structure
26913
26914 @see
26915 @return Result of the function call
26916*/
26917WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026918WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026919(
26920 WDI_ControlBlockType* pWDICtx,
26921 WDI_EventInfoType* pEventData
26922)
26923{
26924 WDI_Status wdiStatus;
26925 eHalStatus halStatus;
26926 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26927
26928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26929
26930 /*-------------------------------------------------------------------------
26931 Sanity check
26932 -------------------------------------------------------------------------*/
26933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26934 ( NULL == pEventData->pEventData ))
26935 {
26936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26937 "%s: Invalid parameters", __func__);
26938 WDI_ASSERT(0);
26939 return WDI_STATUS_E_FAILURE;
26940 }
26941
26942 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26943
26944 /*-------------------------------------------------------------------------
26945 Extract response and send it to UMAC
26946 -------------------------------------------------------------------------*/
26947 halStatus = *((eHalStatus*)pEventData->pEventData);
26948 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26949
26950 /*Notify UMAC*/
26951 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26952
26953 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026954}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026955#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026956
26957/**
26958 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026959
26960 @param pWDICtx: pointer to the WLAN DAL context
26961 pEventData: pointer to the event information structure
26962
Jeff Johnson295189b2012-06-20 16:38:30 -070026963 @see
26964 @return Result of the function call
26965*/
26966WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026967WDI_PackUpdateScanParamsReq
26968(
26969 WDI_ControlBlockType* pWDICtx,
26970 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26971 wpt_uint8** ppSendBuffer,
26972 wpt_uint16* pSize
26973)
26974{
26975 wpt_uint8* pSendBuffer = NULL;
26976 wpt_uint16 usDataOffset = 0;
26977 wpt_uint16 usSendSize = 0;
26978 tUpdateScanParams updateScanParams = {0};
26979
26980
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026982 "Begin WDI Update Scan Parameters Old Style Params");
26983 /*-----------------------------------------------------------------------
26984 Get message buffer
26985 -----------------------------------------------------------------------*/
26986 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26987 sizeof(updateScanParams),
26988 &pSendBuffer, &usDataOffset, &usSendSize))||
26989 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26990 {
26991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026992 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026993 pwdiUpdateScanParams);
26994 WDI_ASSERT(0);
26995 return WDI_STATUS_E_FAILURE;
26996 }
26997
26998 //
26999 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27000 //
27001
27002 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27003 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27004
27005 updateScanParams.ucChannelCount =
27006 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27007 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
27008 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27009 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
27010
27011 wpalMemoryCopy( updateScanParams.aChannels,
27012 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27013 updateScanParams.ucChannelCount);
27014
27015
27016 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27017 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27018 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27019 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27020 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27021
27022 wpalMemoryCopy( pSendBuffer+usDataOffset,
27023 &updateScanParams,
27024 sizeof(updateScanParams));
27025
27026 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27027 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27028
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027030 "End Update Scan Parameters Old Style");
27031
27032 /*Set the output values*/
27033 *ppSendBuffer = pSendBuffer;
27034 *pSize = usSendSize;
27035
27036 return WDI_STATUS_SUCCESS;
27037}
27038
27039/**
27040 @brief Process Update Scan Params function
27041
27042 @param pWDICtx: pointer to the WLAN DAL context
27043 pEventData: pointer to the event information structure
27044
27045 @see
27046 @return Result of the function call
27047*/
27048WDI_Status
27049WDI_PackUpdateScanParamsReqEx
27050(
27051 WDI_ControlBlockType* pWDICtx,
27052 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
27053 wpt_uint8** ppSendBuffer,
27054 wpt_uint16* pSize
27055)
27056{
27057 wpt_uint8* pSendBuffer = NULL;
27058 wpt_uint16 usDataOffset = 0;
27059 wpt_uint16 usSendSize = 0;
27060 tUpdateScanParamsEx updateScanParams = {0};
27061
27062
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027063 /*-----------------------------------------------------------------------
27064 Get message buffer
27065 -----------------------------------------------------------------------*/
27066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27067 sizeof(updateScanParams),
27068 &pSendBuffer, &usDataOffset, &usSendSize))||
27069 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27070 {
27071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027072 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027073 pwdiUpdateScanParams);
27074 WDI_ASSERT(0);
27075 return WDI_STATUS_E_FAILURE;
27076 }
27077
27078 //
27079 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27080 //
27081
27082 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27083 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27084
27085 updateScanParams.ucChannelCount =
27086 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27087 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
27088 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27089 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
27090
27091 wpalMemoryCopy( updateScanParams.aChannels,
27092 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27093 updateScanParams.ucChannelCount);
27094
27095
27096 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27097 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27098 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27099 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27100 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27101
27102 wpalMemoryCopy( pSendBuffer+usDataOffset,
27103 &updateScanParams,
27104 sizeof(updateScanParams));
27105
27106 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27107 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27108
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027109 /*Set the output values*/
27110 *ppSendBuffer = pSendBuffer;
27111 *pSize = usSendSize;
27112
27113 return WDI_STATUS_SUCCESS;
27114}
27115
27116/**
27117 @brief Process Update Scan Params function
27118
27119 @param pWDICtx: pointer to the WLAN DAL context
27120 pEventData: pointer to the event information structure
27121
27122 @see
27123 @return Result of the function call
27124*/
27125WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027126WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027127(
Jeff Johnson295189b2012-06-20 16:38:30 -070027128 WDI_ControlBlockType* pWDICtx,
27129 WDI_EventInfoType* pEventData
27130)
27131{
27132 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
27133 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027134 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027135 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027136 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027137
27138 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027139 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027140 -------------------------------------------------------------------------*/
27141 if (( NULL == pEventData ) ||
27142 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
27143 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
27144 {
27145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027146 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027149 }
27150
27151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27152 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070027153
27154 //
27155 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27156 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027157 if ( pWDICtx->wlanVersion.revision < 1 )
27158 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027159 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027160 &pSendBuffer, &usSendSize);
27161 }
27162 else
27163 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027164 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
27165 &pSendBuffer, &usSendSize);
27166 }
27167
27168 if(WDI_STATUS_SUCCESS != wdiStatus)
27169 {
27170 //memory allocation failed
27171 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027172 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027173
Jeff Johnson295189b2012-06-20 16:38:30 -070027174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027175 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027176 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027177 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027178 wdiUpdateScanParamsCb, pEventData->pUserData,
27179 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027180}
27181
27182/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027183 @brief Process Update Channel Params function
27184
27185 @param pWDICtx: pointer to the WLAN DAL context
27186 pEventData: pointer to the event information structure
27187
27188 @see
27189 @return Result of the function call
27190*/
27191WDI_Status
27192WDI_ProcessUpdateChannelParamsReq
27193(
27194 WDI_ControlBlockType* pWDICtx,
27195 WDI_EventInfoType* pEventData
27196)
27197{
27198 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
27199 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
27200 wpt_uint8* pSendBuffer = NULL;
27201 wpt_uint16 usDataOffset = 0;
27202 wpt_uint16 usSendSize = 0;
27203 tUpdateChannelReqType *updateChannelParams;
27204 wpt_uint32 usUpdateChanParamSize;
27205 wpt_uint8 num_channels = 0;
27206
27207 /*-------------------------------------------------------------------------
27208 Sanity check
27209 -------------------------------------------------------------------------*/
27210 if (( NULL == pEventData ) ||
27211 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
27212 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
27213 {
27214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27215 "%s: Invalid parameters", __func__);
27216 WDI_ASSERT(0);
27217 return WDI_STATUS_E_FAILURE;
27218 }
27219 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053027220 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027221
27222 /*-----------------------------------------------------------------------
27223 Get message buffer
27224 -----------------------------------------------------------------------*/
27225 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27226 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
27227 &pSendBuffer, &usDataOffset, &usSendSize))||
27228 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
27229 {
27230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27231 "Unable to get send buffer in Update Channel Params req %p",
27232 pwdiUpdateChanListParams);
27233 WDI_ASSERT(0);
27234 return WDI_STATUS_E_FAILURE;
27235 }
27236 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
27237
27238 updateChannelParams->numChan = num_channels;
27239 wpalMemoryCopy(&updateChannelParams->chanParam,
27240 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
27241 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
27242
27243 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
27244 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
27245
27246 /*-------------------------------------------------------------------------
27247 Send Update channel request to fw
27248 -------------------------------------------------------------------------*/
27249 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27250 wdiUpdateChanParamsCb, pEventData->pUserData,
27251 WDI_UPDATE_CHAN_RESP);
27252}
27253
27254/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027255 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070027256
27257 @param pWDICtx: pointer to the WLAN DAL context
27258 pEventData: pointer to the event information structure
27259
Jeff Johnson295189b2012-06-20 16:38:30 -070027260 @see
27261 @return Result of the function call
27262*/
27263WDI_Status
27264WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070027265(
Jeff Johnson295189b2012-06-20 16:38:30 -070027266 WDI_ControlBlockType* pWDICtx,
27267 WDI_EventInfoType* pEventData
27268)
27269{
Srikant Kuppa066904f2013-05-07 13:56:02 -070027270 WDI_LowLevelIndType wdiInd;
27271 tpPrefNetwFoundParams pNetwFoundParams;
27272 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027273
27274
27275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027277 -------------------------------------------------------------------------*/
27278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27279 ( NULL == pEventData->pEventData ))
27280 {
27281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070027284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027285 }
27286
27287 /*-------------------------------------------------------------------------
27288 Extract indication and send it to UMAC
27289 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070027290 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
27291
27292 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
27293 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
27294 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
27295
27296 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
27297 {
27298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27299 "%s: fail to allocate memory", __func__);
27300 return WDI_STATUS_MEM_FAILURE;
27301 }
27302
27303 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27304 (pNetwFoundParams->ssId.length < 32 )?
27305 pNetwFoundParams->ssId.length : 32;
27306 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27307 pNetwFoundParams->ssId.ssId,
27308 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27309 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27310 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27311 pNetwFoundParams->frameLength;
27312 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27313 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27314 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027315
27316 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027317 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027318
Jeff Johnson295189b2012-06-20 16:38:30 -070027319 // DEBUG
27320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027321 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027322 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027323 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027324 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027325 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027326 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27327
ltimariub77f24b2013-01-24 18:54:33 -080027328 if ( pWDICtx->wdiLowLevelIndCB )
27329 {
27330 /*Notify UMAC*/
27331 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27332 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027333
27334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027335}
27336
27337/**
27338 @brief Process PNO Rsp function (called when a
27339 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027340
27341 @param pWDICtx: pointer to the WLAN DAL context
27342 pEventData: pointer to the event information structure
27343
Jeff Johnson295189b2012-06-20 16:38:30 -070027344 @see
27345 @return Result of the function call
27346*/
27347WDI_Status
27348WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027349(
Jeff Johnson295189b2012-06-20 16:38:30 -070027350 WDI_ControlBlockType* pWDICtx,
27351 WDI_EventInfoType* pEventData
27352)
27353{
27354 WDI_Status wdiStatus;
27355 eHalStatus halStatus;
27356 WDI_PNOScanCb wdiPNOScanCb = NULL;
27357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27358
27359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027361 -------------------------------------------------------------------------*/
27362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27363 ( NULL == pEventData->pEventData ))
27364 {
27365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027369 }
27370
27371
Jeff Johnsone7245742012-09-05 17:12:55 -070027372 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027373
27374 /*-------------------------------------------------------------------------
27375 Extract response and send it to UMAC
27376 -------------------------------------------------------------------------*/
27377 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027378 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027379
27380 /*Notify UMAC*/
27381 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27382
Jeff Johnsone7245742012-09-05 17:12:55 -070027383 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027384}/*WDI_ProcessSetPreferredNetworkRsp*/
27385
27386/**
27387 @brief Process RSSI Filter Rsp function (called when a
27388 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027389
27390 @param pWDICtx: pointer to the WLAN DAL context
27391 pEventData: pointer to the event information structure
27392
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 @see
27394 @return Result of the function call
27395*/
27396WDI_Status
27397WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027398(
Jeff Johnson295189b2012-06-20 16:38:30 -070027399 WDI_ControlBlockType* pWDICtx,
27400 WDI_EventInfoType* pEventData
27401)
27402{
27403 WDI_Status wdiStatus;
27404 eHalStatus halStatus;
27405 WDI_RssiFilterCb wdiRssiFilterCb;
27406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27407
27408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027410 -------------------------------------------------------------------------*/
27411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27412 ( NULL == pEventData->pEventData ))
27413 {
27414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027415 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027418 }
27419
Jeff Johnsone7245742012-09-05 17:12:55 -070027420 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027421
27422 /*-------------------------------------------------------------------------
27423 Extract response and send it to UMAC
27424 -------------------------------------------------------------------------*/
27425 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027426 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027427
27428 /*Notify UMAC*/
27429 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27430
Jeff Johnsone7245742012-09-05 17:12:55 -070027431 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027432}/*WDI_ProcessSetRssiFilterRsp*/
27433
27434/**
27435 @brief Process Update Scan Params Rsp function (called when a
27436 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027437
27438 @param pWDICtx: pointer to the WLAN DAL context
27439 pEventData: pointer to the event information structure
27440
Jeff Johnson295189b2012-06-20 16:38:30 -070027441 @see
27442 @return Result of the function call
27443*/
27444WDI_Status
27445WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027446(
Jeff Johnson295189b2012-06-20 16:38:30 -070027447 WDI_ControlBlockType* pWDICtx,
27448 WDI_EventInfoType* pEventData
27449)
27450{
27451 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027452 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027453 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027454 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27456
27457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027459 -------------------------------------------------------------------------*/
27460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27461 ( NULL == pEventData->pEventData ))
27462 {
27463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027467 }
27468
27469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027470 "%s: Process UPD scan params ptr : %p",
27471 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027472
Jeff Johnsone7245742012-09-05 17:12:55 -070027473 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027474
27475 /*-------------------------------------------------------------------------
27476 Extract response and send it to UMAC
27477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027478 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27479 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027480 sizeof(halUpdScanParams.status));
27481
27482 uStatus = halUpdScanParams.status;
27483
27484 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027485 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027486
27487 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027488 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027489
Jeff Johnsone7245742012-09-05 17:12:55 -070027490 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027491
27492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027493 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027494 halUpdScanParams.status);
27495
27496 /*Notify UMAC*/
27497 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27498
Jeff Johnsone7245742012-09-05 17:12:55 -070027499 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027500}
27501#endif // FEATURE_WLAN_SCAN_PNO
27502
27503#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027504WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027505WDI_8023MulticastListReq
27506(
27507 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27508 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27509 void* pUserData
27510)
27511{
27512 WDI_EventInfoType wdiEventData;
27513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27514
27515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027516 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027517
27518 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027519 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027520 ------------------------------------------------------------------------*/
27521 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27522 {
27523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27524 "WDI API call before module is initialized - Fail request");
27525
Jeff Johnsone7245742012-09-05 17:12:55 -070027526 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027527 }
27528
27529 /*------------------------------------------------------------------------
27530 Fill in Event data and post to the Main FSM
27531 ------------------------------------------------------------------------*/
27532 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027533 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027534 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027535 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027536 wdiEventData.pUserData = pUserData;
27537
27538 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27539}
27540
Jeff Johnsone7245742012-09-05 17:12:55 -070027541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027542WDI_ReceiveFilterSetFilterReq
27543(
27544 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27545 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27546 void* pUserData
27547)
27548{
27549 WDI_EventInfoType wdiEventData;
27550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27551
27552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027553 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027554
27555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027556 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027557 ------------------------------------------------------------------------*/
27558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27559 {
27560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27561 "WDI API call before module is initialized - Fail request");
27562
Jeff Johnsone7245742012-09-05 17:12:55 -070027563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027564 }
27565
27566 /*------------------------------------------------------------------------
27567 Fill in Event data and post to the Main FSM
27568 ------------------------------------------------------------------------*/
27569 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027570 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27571 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027572 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27573 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027574 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027575 wdiEventData.pUserData = pUserData;
27576
27577
27578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27579}
27580
Jeff Johnsone7245742012-09-05 17:12:55 -070027581WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027582WDI_FilterMatchCountReq
27583(
27584 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27585 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27586 void* pUserData
27587)
27588{
27589 WDI_EventInfoType wdiEventData;
27590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27591
27592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027593 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027594
27595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027597 ------------------------------------------------------------------------*/
27598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27599 {
27600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27601 "WDI API call before module is initialized - Fail request");
27602
Jeff Johnsone7245742012-09-05 17:12:55 -070027603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027604 }
27605
27606 /*------------------------------------------------------------------------
27607 Fill in Event data and post to the Main FSM
27608 ------------------------------------------------------------------------*/
27609 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027610 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027611 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027612 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027613 wdiEventData.pUserData = pUserData;
27614
27615
27616 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27617}
27618
Jeff Johnsone7245742012-09-05 17:12:55 -070027619WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027620WDI_ReceiveFilterClearFilterReq
27621(
27622 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27623 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27624 void* pUserData
27625)
27626{
27627 WDI_EventInfoType wdiEventData;
27628 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27629
27630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027631 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027632
27633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027634 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027635 ------------------------------------------------------------------------*/
27636 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27637 {
27638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27639 "WDI API call before module is initialized - Fail request");
27640
Jeff Johnsone7245742012-09-05 17:12:55 -070027641 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027642 }
27643
27644 /*------------------------------------------------------------------------
27645 Fill in Event data and post to the Main FSM
27646 ------------------------------------------------------------------------*/
27647 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027648 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027649 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027650 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027651 wdiEventData.pUserData = pUserData;
27652
27653
27654 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27655}
27656
27657/**
27658 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027659
27660 @param pWDICtx: pointer to the WLAN DAL context
27661 pEventData: pointer to the event information structure
27662
Jeff Johnson295189b2012-06-20 16:38:30 -070027663 @see
27664 @return Result of the function call
27665*/
27666WDI_Status
27667WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027668(
Jeff Johnson295189b2012-06-20 16:38:30 -070027669 WDI_ControlBlockType* pWDICtx,
27670 WDI_EventInfoType* pEventData
27671)
27672{
27673 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27674 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027675 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027676 wpt_uint16 usDataOffset = 0;
27677 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027678 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027679 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027680 wpt_uint8 ucCurrentBSSSesIdx = 0;
27681 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027682
27683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027684 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027685
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027686 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27687 if( NULL == pRcvFltMcAddrListType )
27688 {
27689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27690 "Failed to alloc in WDI_Process8023MulticastListReq");
27691 return WDI_STATUS_E_FAILURE;
27692 }
27693
Jeff Johnson295189b2012-06-20 16:38:30 -070027694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027696 -------------------------------------------------------------------------*/
27697 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027698 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027699 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027700 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027701 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27702 {
27703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027704 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027705 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027707 return WDI_STATUS_E_FAILURE;
27708 }
27709
27710 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27711 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27712 &pBSSSes);
27713 if ( NULL == pBSSSes )
27714 {
27715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027716 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027717 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027719 }
27720
27721 /*-----------------------------------------------------------------------
27722 Get message buffer
27723 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027724 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27725 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027726 sizeof(tHalRcvFltMcAddrListType),
27727 &pSendBuffer, &usDataOffset, &usSendSize))||
27728 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27729 {
27730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27731 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027732 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027733 pEventData, pwdiFltPktSetMcListReqParamsType,
27734 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027735 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027738 }
27739
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027740 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027741 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027742 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027743 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027744 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027745 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27746 sizeof(tSirMacAddr));
27747 }
27748
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027749 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027750 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027751 pRcvFltMcAddrListType,
27752 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027753
27754 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027755 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027756
27757
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027758 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027760 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027763 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027764 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027765}
27766
27767/**
27768 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027769
27770 @param pWDICtx: pointer to the WLAN DAL context
27771 pEventData: pointer to the event information structure
27772
Jeff Johnson295189b2012-06-20 16:38:30 -070027773 @see
27774 @return Result of the function call
27775*/
27776WDI_Status
27777WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027778(
Jeff Johnson295189b2012-06-20 16:38:30 -070027779 WDI_ControlBlockType* pWDICtx,
27780 WDI_EventInfoType* pEventData
27781)
27782{
27783 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27784 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027786 wpt_uint16 usDataOffset = 0;
27787 wpt_uint16 usSendSize = 0;
27788 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027789 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027790 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027791 wpt_uint8 ucCurrentBSSSesIdx = 0;
27792 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027793 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27794 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027795
27796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027797 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027798
27799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027801 -------------------------------------------------------------------------*/
27802 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027803 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027804 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027805 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027806 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27807 {
27808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027809 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027811 return WDI_STATUS_E_FAILURE;
27812 }
27813
27814 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27815 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27816 &pBSSSes);
27817 if ( NULL == pBSSSes )
27818 {
27819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027820 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027822 }
27823
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027824 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27825 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027826
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027827 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27828 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27829 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27830
27831 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27832 usSessRcvPktFilterCfgSize);
27833
27834 if(NULL == pSessRcvPktFilterCfg)
27835 {
27836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27837 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027838 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027839 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027840 WDI_ASSERT(0);
27841 return WDI_STATUS_E_FAILURE;
27842 }
27843
27844 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27845
27846 /*-----------------------------------------------------------------------
27847 Get message buffer
27848 -----------------------------------------------------------------------*/
27849
27850 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27851 usSessRcvPktFilterCfgSize,
27852 &pSendBuffer, &usDataOffset, &usSendSize))||
27853 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27854 {
27855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27856 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027857 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027858 pEventData, pwdiSetRcvPktFilterReqInfo,
27859 wdiReceiveFilterSetFilterCb);
27860 WDI_ASSERT(0);
27861 wpalMemoryFree(pSessRcvPktFilterCfg);
27862 return WDI_STATUS_E_FAILURE;
27863 }
27864
27865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027866 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027867 usSendSize,pSessRcvPktFilterCfg);
27868
27869 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27870 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27871 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27872 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27873
27874 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27875
27876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27877 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27878 pSessRcvPktFilterCfg->filterType);
27879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27880 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27881 pSessRcvPktFilterCfg->coleasceTime);
27882
27883 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27884 {
27885 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27886 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27887 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27888 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27889 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27890 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27891 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27892 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27893
27894 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27895 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27896 8);
27897 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27898 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27899 8);
27900
27901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027902 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027903 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27904 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27905
27906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027907 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027908 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27909 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27910
27911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027912 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027913 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27914 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27915 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27916 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27917 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27918 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27919
27920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027921 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027922 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27923 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27924 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27925 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27926 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27927 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27928 }
27929
27930 wpalMemoryCopy( pSendBuffer+usDataOffset,
27931 pSessRcvPktFilterCfg,
27932 usSessRcvPktFilterCfgSize);
27933
27934
27935 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27936 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27937
27938 wpalMemoryFree(pSessRcvPktFilterCfg);
27939
27940 }
27941 /*If SLM_SESSIONIZATION is not supported then do this */
27942 else
27943 {
27944 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27945 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27946 * sizeof(tHalRcvPktFilterParams));
27947
27948 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027949 usRcvPktFilterCfgSize);
27950
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027951 if(NULL == pRcvPktFilterCfg)
27952 {
27953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27954 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027955 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027956 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027957 WDI_ASSERT(0);
27958 return WDI_STATUS_E_FAILURE;
27959 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027960
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027961 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027962
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027963 /*-----------------------------------------------------------------------
27964 Get message buffer
27965 -----------------------------------------------------------------------*/
27966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027967 usRcvPktFilterCfgSize,
27968 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027969 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27970 {
27971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027972 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027973 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027974 pEventData, pwdiSetRcvPktFilterReqInfo,
27975 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027976 WDI_ASSERT(0);
27977 wpalMemoryFree(pRcvPktFilterCfg);
27978 return WDI_STATUS_E_FAILURE;
27979 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027980
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027982 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027983 usSendSize,usRcvPktFilterCfgSize);
27984
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027985 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27986 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27987 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27988 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027989
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027991 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027992 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027994 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027995 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027996
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027997 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27998 {
27999 pRcvPktFilterCfg->paramsData[i].protocolLayer =
28000 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
28001 pRcvPktFilterCfg->paramsData[i].cmpFlag =
28002 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
28003 pRcvPktFilterCfg->paramsData[i].dataOffset =
28004 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
28005 pRcvPktFilterCfg->paramsData[i].dataLength =
28006 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070028007
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028008 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070028009 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
28010 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028011 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070028012 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
28013 8);
28014
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028016 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070028017 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070028018 pRcvPktFilterCfg->paramsData[i].cmpFlag);
28019
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028021 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028022 pRcvPktFilterCfg->paramsData[i].dataOffset,
28023 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070028024
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028026 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028027 pRcvPktFilterCfg->paramsData[i].compareData[0],
28028 pRcvPktFilterCfg->paramsData[i].compareData[1],
28029 pRcvPktFilterCfg->paramsData[i].compareData[2],
28030 pRcvPktFilterCfg->paramsData[i].compareData[3],
28031 pRcvPktFilterCfg->paramsData[i].compareData[4],
28032 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070028033
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028035 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028036 pRcvPktFilterCfg->paramsData[i].dataMask[0],
28037 pRcvPktFilterCfg->paramsData[i].dataMask[1],
28038 pRcvPktFilterCfg->paramsData[i].dataMask[2],
28039 pRcvPktFilterCfg->paramsData[i].dataMask[3],
28040 pRcvPktFilterCfg->paramsData[i].dataMask[4],
28041 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
28042 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028043
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028044 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070028045 pRcvPktFilterCfg,
28046 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070028047
28048
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028049 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
28050 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028051
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028053 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028054 wpalMemoryFree(pRcvPktFilterCfg);
28055 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028057 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028060 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028061 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028062}
28063
28064/**
28065 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028066
28067 @param pWDICtx: pointer to the WLAN DAL context
28068 pEventData: pointer to the event information structure
28069
Jeff Johnson295189b2012-06-20 16:38:30 -070028070 @see
28071 @return Result of the function call
28072*/
28073WDI_Status
28074WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028075(
Jeff Johnson295189b2012-06-20 16:38:30 -070028076 WDI_ControlBlockType* pWDICtx,
28077 WDI_EventInfoType* pEventData
28078)
28079{
28080 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
28081 NULL;
28082 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
28083 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028084 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028085 wpt_uint16 usDataOffset = 0;
28086 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028087 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
28088 wpt_uint8 ucCurrentBSSSesIdx = 0;
28089 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028090
28091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028092 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028093
28094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028096 -------------------------------------------------------------------------*/
28097 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028098 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028099 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028100 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028101 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
28102 {
28103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028104 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028107 }
28108
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028109 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28110 pwdiRcvFltPktMatchCntReqParamsType->bssId,
28111 &pBSSSes);
28112 if ( NULL == pBSSSes )
28113 {
28114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028115 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028116 return WDI_STATUS_E_FAILURE;
28117 }
28118
Jeff Johnson295189b2012-06-20 16:38:30 -070028119 /*-----------------------------------------------------------------------
28120 Get message buffer
28121 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028122 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28123 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028124 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028125 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028126 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028127 {
28128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28129 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028130 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028131 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
28132 wdiFilterMatchCountCb);
28133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028135 }
28136
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028137 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
28138 wpalMemoryCopy( pSendBuffer+usDataOffset,
28139 &rcvFltPktMatchCntReqParam,
28140 sizeof(rcvFltPktMatchCntReqParam));
28141
Jeff Johnson295189b2012-06-20 16:38:30 -070028142 //
28143 // Don't need to fill send buffer other than header
28144 //
28145 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028146 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028147
28148
28149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028150 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028151 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028152 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28153 wdiFilterMatchCountCb,
28154 pEventData->pUserData,
28155 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028156}
28157
28158/**
28159 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028160
28161 @param pWDICtx: pointer to the WLAN DAL context
28162 pEventData: pointer to the event information structure
28163
Jeff Johnson295189b2012-06-20 16:38:30 -070028164 @see
28165 @return Result of the function call
28166*/
28167WDI_Status
28168WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028169(
Jeff Johnson295189b2012-06-20 16:38:30 -070028170 WDI_ControlBlockType* pWDICtx,
28171 WDI_EventInfoType* pEventData
28172)
Jeff Johnsone7245742012-09-05 17:12:55 -070028173{
Jeff Johnson295189b2012-06-20 16:38:30 -070028174 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
28175 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028176 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028177 wpt_uint16 usDataOffset = 0;
28178 wpt_uint16 usSendSize = 0;
28179 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028180 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070028181 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028182
28183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028184 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028185
28186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028188 -------------------------------------------------------------------------*/
28189 if (( NULL == pEventData ) ||
28190 ( NULL == (pwdiRcvFltPktClearReqParamsType =
28191 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028192 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028193 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
28194 {
28195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028198 return WDI_STATUS_E_FAILURE;
28199 }
28200
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028201 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028202 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
28203 &pBSSSes);
28204 if ( NULL == pBSSSes )
28205 {
28206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028207 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028209 }
28210
28211 /*-----------------------------------------------------------------------
28212 Get message buffer
28213 -----------------------------------------------------------------------*/
28214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028215 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028216 sizeof(tHalRcvFltPktClearParam),
28217 &pSendBuffer, &usDataOffset, &usSendSize))||
28218 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
28219 {
28220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28221 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028222 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028223 pEventData, pwdiRcvFltPktClearReqParamsType,
28224 wdiRcvFltPktClearFilterCb);
28225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028227 }
28228
28229
28230 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028231 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070028232 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028233 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070028234
Jeff Johnsone7245742012-09-05 17:12:55 -070028235 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
28236 wpalMemoryCopy( pSendBuffer+usDataOffset,
28237 &rcvFltPktClearParam,
28238 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070028239
28240 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028241 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028242
28243
28244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028245 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028248 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028249 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028250}
28251
28252/**
28253 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028254
28255 @param pWDICtx: pointer to the WLAN DAL context
28256 pEventData: pointer to the event information structure
28257
Jeff Johnson295189b2012-06-20 16:38:30 -070028258 @see
28259 @return Result of the function call
28260*/
28261WDI_Status
28262WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028263(
Jeff Johnson295189b2012-06-20 16:38:30 -070028264 WDI_ControlBlockType* pWDICtx,
28265 WDI_EventInfoType* pEventData
28266)
28267{
Jeff Johnson295189b2012-06-20 16:38:30 -070028268 eHalStatus halStatus;
28269 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028270 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
28271 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28273
28274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028275 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028276
28277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028279 -------------------------------------------------------------------------*/
28280 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28281 ( NULL == pEventData->pEventData ))
28282 {
28283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028287 }
28288
Jeff Johnsone7245742012-09-05 17:12:55 -070028289 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028290
28291 /*-------------------------------------------------------------------------
28292 Extract response and send it to UMAC
28293 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028294 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28295 {
28296 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
28297 pEventData->pEventData,
28298 sizeof(halRcvFltPktSetMcListRsp));
28299
28300 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28301 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28302 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28303 halRcvFltPktSetMcListRsp.bssIdx;
28304 }
28305 else
28306 {
28307 halStatus = *((eHalStatus*)pEventData->pEventData);
28308 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28309 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028310
28311 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028312 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028313
Jeff Johnsone7245742012-09-05 17:12:55 -070028314 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028315}
28316
28317/**
28318 @brief Process Set Rsp function (called when a
28319 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028320
28321 @param pWDICtx: pointer to the WLAN DAL context
28322 pEventData: pointer to the event information structure
28323
Jeff Johnson295189b2012-06-20 16:38:30 -070028324 @see
28325 @return Result of the function call
28326*/
28327WDI_Status
28328WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028329(
Jeff Johnson295189b2012-06-20 16:38:30 -070028330 WDI_ControlBlockType* pWDICtx,
28331 WDI_EventInfoType* pEventData
28332)
28333{
Jeff Johnson295189b2012-06-20 16:38:30 -070028334 eHalStatus halStatus;
28335 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028336 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28337 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28339
28340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028341 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028342
28343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028344 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028345 -------------------------------------------------------------------------*/
28346 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28347 ( NULL == pEventData->pEventData ))
28348 {
28349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028350 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028352 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028353 }
28354
28355 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028356 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028357
28358 /*-------------------------------------------------------------------------
28359 Extract response and send it to UMAC
28360 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028361 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28362 {
28363 wpalMemoryCopy( &halSetPktFilterRspParams,
28364 pEventData->pEventData,
28365 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028366
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028367 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28368 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28369 }
28370 else
28371 {
28372 halStatus = *((eHalStatus*)pEventData->pEventData);
28373 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28374 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028375 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028376 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028377
Jeff Johnsone7245742012-09-05 17:12:55 -070028378 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028379}
28380
28381/**
28382 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028383
28384 @param pWDICtx: pointer to the WLAN DAL context
28385 pEventData: pointer to the event information structure
28386
Jeff Johnson295189b2012-06-20 16:38:30 -070028387 @see
28388 @return Result of the function call
28389*/
28390WDI_Status
28391WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028392(
Jeff Johnson295189b2012-06-20 16:38:30 -070028393 WDI_ControlBlockType* pWDICtx,
28394 WDI_EventInfoType* pEventData
28395)
28396{
Jeff Johnson295189b2012-06-20 16:38:30 -070028397 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028398 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028399 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28400 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028401
28402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28403
28404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028405 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028406
28407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028408 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028409 -------------------------------------------------------------------------*/
28410 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28411 ( NULL == pEventData->pEventData ))
28412 {
28413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028414 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028415 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028416 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028417 }
28418
Jeff Johnsone7245742012-09-05 17:12:55 -070028419 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028420
28421 /*-------------------------------------------------------------------------
28422 Extract response and send it to UMAC
28423 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028424 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28425 {
28426 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28427 pEventData->pEventData,
28428 sizeof(halRcvFltrPktMatachRsp));
28429
28430 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28431 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28432 }
28433 else
28434 {
28435 halStatus = *((eHalStatus*)pEventData->pEventData);
28436 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28437 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028438
28439 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028440 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028441
Jeff Johnsone7245742012-09-05 17:12:55 -070028442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028443}
28444
28445/**
28446 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028447
28448 @param pWDICtx: pointer to the WLAN DAL context
28449 pEventData: pointer to the event information structure
28450
Jeff Johnson295189b2012-06-20 16:38:30 -070028451 @see
28452 @return Result of the function call
28453*/
28454WDI_Status
28455WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028456(
Jeff Johnson295189b2012-06-20 16:38:30 -070028457 WDI_ControlBlockType* pWDICtx,
28458 WDI_EventInfoType* pEventData
28459)
28460{
Jeff Johnson295189b2012-06-20 16:38:30 -070028461 eHalStatus halStatus;
28462 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028463 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28464 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28466
28467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028468 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028469
28470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028472 -------------------------------------------------------------------------*/
28473 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28474 ( NULL == pEventData->pEventData ))
28475 {
28476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028480 }
28481
28482 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028483 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028484
28485 /*-------------------------------------------------------------------------
28486 Extract response and send it to UMAC
28487 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028488 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28489 {
28490 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28491 pEventData->pEventData,
28492 sizeof(halRcvFltPktClearRspMsg));
28493
28494 wdiRcvFltPktClearRspParamsType.wdiStatus =
28495 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28496 wdiRcvFltPktClearRspParamsType.bssIdx =
28497 halRcvFltPktClearRspMsg.bssIdx;
28498 }
28499 else
28500 {
28501 halStatus = *((eHalStatus*)pEventData->pEventData);
28502 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28503 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028504
28505 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028506 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028507
Jeff Johnsone7245742012-09-05 17:12:55 -070028508 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028509}
28510#endif // WLAN_FEATURE_PACKET_FILTERING
28511
28512/**
28513 @brief Process Shutdown Rsp function
28514 There is no shutdown response comming from HAL
28515 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028516
Jeff Johnson295189b2012-06-20 16:38:30 -070028517 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028518 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028519
28520 @see
28521 @return Result of the function call
28522*/
28523WDI_Status
28524WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028525(
Jeff Johnson295189b2012-06-20 16:38:30 -070028526 WDI_ControlBlockType* pWDICtx,
28527 WDI_EventInfoType* pEventData
28528)
28529{
28530 /*There is no shutdown response comming from HAL - function just kept for
28531 simmetry */
28532 WDI_ASSERT(0);
28533 return WDI_STATUS_SUCCESS;
28534}/*WDI_ProcessShutdownRsp*/
28535
28536/**
28537 @brief WDI_SetPowerParamsReq
28538
Jeff Johnsone7245742012-09-05 17:12:55 -070028539 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028540 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028541
Jeff Johnson295189b2012-06-20 16:38:30 -070028542 wdiPowerParamsCb: callback for passing back the response
28543 of the Set Power Params operation received from the
28544 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028545
Jeff Johnson295189b2012-06-20 16:38:30 -070028546 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028547 callback
28548
Jeff Johnson295189b2012-06-20 16:38:30 -070028549 @return Result of the function call
28550*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028551WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028552WDI_SetPowerParamsReq
28553(
28554 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28555 WDI_SetPowerParamsCb wdiPowerParamsCb,
28556 void* pUserData
28557)
28558{
28559 WDI_EventInfoType wdiEventData;
28560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28561
28562 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028563 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028564 ------------------------------------------------------------------------*/
28565 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28566 {
28567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28568 "WDI API call before module is initialized - Fail request");
28569
Jeff Johnsone7245742012-09-05 17:12:55 -070028570 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028571 }
28572
28573 /*------------------------------------------------------------------------
28574 Fill in Event data and post to the Main FSM
28575 ------------------------------------------------------------------------*/
28576 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028577 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028578 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028579 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028580 wdiEventData.pUserData = pUserData;
28581
28582 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28583}/*WDI_SetPowerParamsReq*/
28584
28585/**
28586 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028587
28588 @param pWDICtx: pointer to the WLAN DAL context
28589 pEventData: pointer to the event information structure
28590
Jeff Johnson295189b2012-06-20 16:38:30 -070028591 @see
28592 @return Result of the function call
28593*/
28594WDI_Status
28595WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028596(
Jeff Johnson295189b2012-06-20 16:38:30 -070028597 WDI_ControlBlockType* pWDICtx,
28598 WDI_EventInfoType* pEventData
28599)
28600{
28601 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28602 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028603 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028604 wpt_uint16 usDataOffset = 0;
28605 wpt_uint16 usSendSize = 0;
28606 tSetPowerParamsType powerParams;
28607
28608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028610 -------------------------------------------------------------------------*/
28611 if (( NULL == pEventData ) ||
28612 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28613 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28614 {
28615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028619 }
28620
28621 /*-----------------------------------------------------------------------
28622 Get message buffer
28623 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028624 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028625 sizeof(powerParams),
28626 &pSendBuffer, &usDataOffset, &usSendSize))||
28627 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28628 {
28629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028630 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028631 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28632 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028634 }
28635
28636 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028637 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028638 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28639
28640 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028641 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028642 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28643
28644 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028645 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028646 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28647
28648 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028649 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028650 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28651
28652 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028653 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028654 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28655
28656 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028657 powerParams.uBETInterval =
28658 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028659
Yue Mac24062f2013-05-13 17:01:29 -070028660 /* MAX LI for modulated DTIM */
28661 powerParams.uMaxLIModulatedDTIM =
28662 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028663
28664 wpalMemoryCopy( pSendBuffer+usDataOffset,
28665 &powerParams,
28666 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028667
28668 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028669 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028670
28671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028672 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028673 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028674 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28675 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028676}
28677
28678/**
28679 @brief Process Power Params Rsp function (called when a
28680 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028681
28682 @param pWDICtx: pointer to the WLAN DAL context
28683 pEventData: pointer to the event information structure
28684
Jeff Johnson295189b2012-06-20 16:38:30 -070028685 @see
28686 @return Result of the function call
28687*/
28688WDI_Status
28689WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028690(
Jeff Johnson295189b2012-06-20 16:38:30 -070028691 WDI_ControlBlockType* pWDICtx,
28692 WDI_EventInfoType* pEventData
28693)
28694{
28695 WDI_Status wdiStatus;
28696 eHalStatus halStatus;
28697 WDI_SetPowerParamsCb wdiPowerParamsCb;
28698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28699
28700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028701 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028702 -------------------------------------------------------------------------*/
28703 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28704 ( NULL == pEventData->pEventData ))
28705 {
28706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028710 }
28711
Jeff Johnsone7245742012-09-05 17:12:55 -070028712 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028713
28714 /*-------------------------------------------------------------------------
28715 Extract response and send it to UMAC
28716 -------------------------------------------------------------------------*/
28717 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028718 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028719
28720 /*Notify UMAC*/
28721 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28722
Jeff Johnsone7245742012-09-05 17:12:55 -070028723 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028724}/*WDI_ProcessSetPowerParamsRsp*/
28725
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028726/**
28727 @brief WDI_dhcpStartInd
28728 Host will send an event to the FW when DHCP is initiated
28729
28730 @param
28731 WDI_DHCPInd: DHCP Indication
28732 @see
28733 @return Result of the function call
28734*/
28735WDI_Status
28736WDI_dhcpStartInd
28737(
28738 WDI_DHCPInd *wdiDHCPInd
28739)
28740{
28741 WDI_EventInfoType wdiEventData;
28742
28743 /*------------------------------------------------------------------------
28744 Sanity Check
28745 ------------------------------------------------------------------------*/
28746 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28747 {
28748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28749 "WDI API call before module is initialized - Fail request");
28750
28751 return WDI_STATUS_E_NOT_ALLOWED;
28752 }
28753
28754 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28755 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028756 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028757 wdiEventData.pCBfnc = NULL;
28758 wdiEventData.pUserData = NULL;
28759
28760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28761}
28762
28763
28764/**
28765 @brief WDI_dhcpStopInd
28766 Host will send an event to the FW when DHCP is completed
28767
28768 @param
28769 WDI_DHCPInd: DHCP Indication
28770 @see
28771 @return Result of the function call
28772*/
28773WDI_Status
28774WDI_dhcpStopInd
28775(
28776 WDI_DHCPInd *wdiDHCPInd
28777)
28778{
28779 WDI_EventInfoType wdiEventData;
28780
28781 /*------------------------------------------------------------------------
28782 Sanity Check
28783 ------------------------------------------------------------------------*/
28784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28785 {
28786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28787 "WDI API call before module is initialized - Fail request");
28788
28789 return WDI_STATUS_E_NOT_ALLOWED;
28790 }
28791
28792 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28793 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028794 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028795 wdiEventData.pCBfnc = NULL;
28796 wdiEventData.pUserData = NULL;
28797
28798 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28799}
28800
28801
28802/**
28803 @brief Process DHCP Start Indication message and post it to HAL
28804
28805 @param pWDICtx: pointer to the WLAN DAL context
28806 pEventData: pointer to the event information structure
28807
28808 @see
28809 @return Result of the function call
28810*/
28811WDI_Status
28812WDI_ProcessDHCPStartInd
28813(
28814 WDI_ControlBlockType* pWDICtx,
28815 WDI_EventInfoType* pEventData
28816)
28817{
28818 wpt_uint8* pSendBuffer = NULL;
28819 wpt_uint16 usDataOffset = 0;
28820 wpt_uint16 usSendSize = 0;
28821 wpt_uint16 usLen = 0;
28822 WDI_DHCPInd* pwdiDHCPInd = NULL;
28823 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028824 WDI_Status wdiStatus;
28825
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028826
28827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28828
28829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28830 "%s", __func__);
28831
28832 /*-------------------------------------------------------------------------
28833 Sanity check
28834 -------------------------------------------------------------------------*/
28835 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28836 {
28837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28838 "%s: Invalid parameters", __func__);
28839 WDI_ASSERT(0);
28840 return WDI_STATUS_E_FAILURE;
28841 }
28842 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28843 /*-----------------------------------------------------------------------
28844 Get message buffer
28845 -----------------------------------------------------------------------*/
28846
28847 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28848 WDI_DHCP_START_IND,
28849 sizeof(tDHCPInfo),
28850 &pSendBuffer, &usDataOffset, &usSendSize))||
28851 ( usSendSize < (usDataOffset + usLen )))
28852 {
28853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28854 "Unable to get send buffer in DHCP Start req %p ",
28855 pEventData);
28856 WDI_ASSERT(0);
28857 return WDI_STATUS_E_FAILURE;
28858 }
28859
Sandeep Puligillaee789512014-02-13 19:14:52 +053028860 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028861 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28862 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28863 WDI_MAC_ADDR_LEN);
28864
28865 pWDICtx->pReqStatusUserData = NULL;
28866 pWDICtx->pfncRspCB = NULL;
28867
28868 /*-------------------------------------------------------------------------
28869 Send DHCP Start Indication to HAL
28870 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028871 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28872 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028873}/*WDI_ProcessDHCPStartInd*/
28874
28875/**
28876 @brief Process DHCP Stop indication message and post it to HAL
28877
28878 @param pWDICtx: pointer to the WLAN DAL context
28879 pEventData: pointer to the event information structure
28880
28881 @see
28882 @return Result of the function call
28883*/
28884WDI_Status
28885WDI_ProcessDHCPStopInd
28886(
28887 WDI_ControlBlockType* pWDICtx,
28888 WDI_EventInfoType* pEventData
28889)
28890{
28891 wpt_uint8* pSendBuffer = NULL;
28892 wpt_uint16 usDataOffset = 0;
28893 wpt_uint16 usSendSize = 0;
28894 wpt_uint16 usLen = 0;
28895 WDI_DHCPInd* pwdiDHCPInd = NULL;
28896 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028897 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028898
28899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28900
28901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28902 "%s", __func__);
28903
28904 /*-------------------------------------------------------------------------
28905 Sanity check
28906 -------------------------------------------------------------------------*/
28907
28908 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28909 {
28910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28911 "%s: Invalid parameters", __func__);
28912 WDI_ASSERT(0);
28913 return WDI_STATUS_E_FAILURE;
28914 }
28915 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28916 /*-----------------------------------------------------------------------
28917 Get message buffer
28918 -----------------------------------------------------------------------*/
28919
28920 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28921 WDI_DHCP_STOP_IND,
28922 sizeof(tDHCPInfo),
28923 &pSendBuffer, &usDataOffset, &usSendSize))||
28924 ( usSendSize < (usDataOffset + usLen )))
28925 {
28926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28927 "Unable to get send buffer in DHCP Start req %p ",
28928 pEventData);
28929 WDI_ASSERT(0);
28930 return WDI_STATUS_E_FAILURE;
28931 }
28932
Sandeep Puligillaee789512014-02-13 19:14:52 +053028933 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028934 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28935 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28936 WDI_MAC_ADDR_LEN);
28937
28938 pWDICtx->pReqStatusUserData = NULL;
28939 pWDICtx->pfncRspCB = NULL;
28940 /*-------------------------------------------------------------------------
28941 Send DHCP Stop indication to HAL
28942 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028943 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28944 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028945
28946}/*WDI_ProcessDHCPStopInd*/
28947
28948
Jeff Johnson295189b2012-06-20 16:38:30 -070028949#ifdef WLAN_FEATURE_GTK_OFFLOAD
28950/**
28951 @brief WDI_GTKOffloadReq will be called when the upper MAC
28952 wants to set GTK Rekey Counter while in power save. Upon
28953 the call of this API the WLAN DAL will pack and send a
28954 HAL GTK offload request message to the lower RIVA
28955 sub-system if DAL is in state STARTED.
28956
28957 In state BUSY this request will be queued. Request won't
28958 be allowed in any other state.
28959
28960 WDI_PostAssocReq must have been called.
28961
28962 @param pwdiGtkOffloadParams: the GTK offload as specified
28963 by the Device Interface
28964
28965 wdiGtkOffloadCb: callback for passing back the response
28966 of the GTK offload operation received from the device
28967
28968 pUserData: user data will be passed back with the
28969 callback
28970
28971 @see WDI_PostAssocReq
28972 @return Result of the function call
28973*/
28974WDI_Status
28975WDI_GTKOffloadReq
28976(
28977 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28978 WDI_GtkOffloadCb wdiGtkOffloadCb,
28979 void* pUserData
28980)
28981{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028982 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28984
28985 /*------------------------------------------------------------------------
28986 Sanity Check
28987 ------------------------------------------------------------------------*/
28988 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28989 {
28990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28991 "WDI API call before module is initialized - Fail request");
28992
28993 return WDI_STATUS_E_NOT_ALLOWED;
28994 }
28995
28996 /*------------------------------------------------------------------------
28997 Fill in Event data and post to the Main FSM
28998 ------------------------------------------------------------------------*/
28999 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
29000 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070029001 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070029002 wdiEventData.pCBfnc = wdiGtkOffloadCb;
29003 wdiEventData.pUserData = pUserData;
29004
29005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29006}
29007
29008
29009/**
29010 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
29011 MAC wants to get GTK Rekey Counter while in power save.
29012 Upon the call of this API the WLAN DAL will pack and
29013 send a HAL GTK offload request message to the lower RIVA
29014 sub-system if DAL is in state STARTED.
29015
29016 In state BUSY this request will be queued. Request won't
29017 be allowed in any other state.
29018
29019 WDI_PostAssocReq must have been called.
29020
29021 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
29022 Information Message as specified by the
29023 Device Interface
29024
29025 wdiGtkOffloadGetInfoCb: callback for passing back the
29026 response of the GTK offload operation received from the
29027 device
29028
29029 pUserData: user data will be passed back with the
29030 callback
29031
29032 @see WDI_PostAssocReq
29033 @return Result of the function call
29034*/
29035WDI_Status
29036WDI_GTKOffloadGetInfoReq
29037(
29038 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
29039 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
29040 void* pUserData
29041)
29042{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029043 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29045
29046 /*------------------------------------------------------------------------
29047 Sanity Check
29048 ------------------------------------------------------------------------*/
29049 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29050 {
29051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29052 "WDI API call before module is initialized - Fail request");
29053
29054 return WDI_STATUS_E_NOT_ALLOWED;
29055 }
29056
29057 /*------------------------------------------------------------------------
29058 Fill in Event data and post to the Main FSM
29059 ------------------------------------------------------------------------*/
29060 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
29061 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
29062 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
29063 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
29064 wdiEventData.pUserData = pUserData;
29065
29066 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29067}
29068
29069
29070/**
29071 @brief Process set GTK Offload Request function
29072
29073 @param pWDICtx: pointer to the WLAN DAL context
29074 pEventData: pointer to the event information structure
29075
29076 @see
29077 @return Result of the function call
29078*/
29079WDI_Status
29080WDI_ProcessGTKOffloadReq
29081(
29082 WDI_ControlBlockType* pWDICtx,
29083 WDI_EventInfoType* pEventData
29084)
29085{
29086 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
29087 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
29088 wpt_uint8* pSendBuffer = NULL;
29089 wpt_uint16 usDataOffset = 0;
29090 wpt_uint16 usSendSize = 0;
29091 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029092 wpt_uint8 ucCurrentSessionId = 0;
29093 WDI_BSSSessionType* pBSSSes = NULL;
29094
Jeff Johnson295189b2012-06-20 16:38:30 -070029095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29096
29097 /*-------------------------------------------------------------------------
29098 Sanity check
29099 -------------------------------------------------------------------------*/
29100 if (( NULL == pEventData ) ||
29101 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
29102 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
29103 {
29104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029106 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029107 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029108 }
29109
29110 /*-----------------------------------------------------------------------
29111 Get message buffer
29112 -----------------------------------------------------------------------*/
29113 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
29114 sizeof(gtkOffloadReqParams),
29115 &pSendBuffer, &usDataOffset, &usSendSize))||
29116 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
29117 {
29118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029119 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029120 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
29121 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029122 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029123 }
29124
29125 //
29126 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
29127 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029128 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29129 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
29130 &pBSSSes);
29131 if ( NULL == pBSSSes )
29132 {
29133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029134 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029135 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029136 }
29137
29138 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
29139
Jeff Johnson295189b2012-06-20 16:38:30 -070029140 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
29141 // Copy KCK
29142 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
29143 // Copy KEK
29144 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
29145 // Copy KeyReplayCounter
29146 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
29147
29148 wpalMemoryCopy( pSendBuffer+usDataOffset,
29149 &gtkOffloadReqParams,
29150 sizeof(gtkOffloadReqParams));
29151
29152 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
29153 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
29154
29155 /*-------------------------------------------------------------------------
29156 Send Get STA Request to HAL
29157 -------------------------------------------------------------------------*/
29158 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29159 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029160
29161fail:
29162 // Release the message buffer so we don't leak
29163 wpalMemoryFree(pSendBuffer);
29164
29165failRequest:
29166 //WDA should have failure check to avoid the memory leak
29167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029168}
29169
29170
29171/**
29172 @brief Process GTK Offload Get Information Request function
29173
29174 @param pWDICtx: pointer to the WLAN DAL context
29175 pEventData: pointer to the event information structure
29176
29177 @see
29178 @return Result of the function call
29179*/
29180WDI_Status
29181WDI_ProcessGTKOffloadGetInfoReq
29182(
29183 WDI_ControlBlockType* pWDICtx,
29184 WDI_EventInfoType* pEventData
29185)
29186{
29187 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
29188 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
29189 wpt_uint8* pSendBuffer = NULL;
29190 wpt_uint16 usDataOffset = 0;
29191 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029192 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
29193 wpt_uint8 ucCurrentSessionId = 0;
29194 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029195
29196 /*-------------------------------------------------------------------------
29197 Sanity check
29198 -------------------------------------------------------------------------*/
29199 if (( NULL == pEventData ) ||
29200 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
29201 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
29202 {
29203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029205 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029206 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029207 }
29208
29209 /*-----------------------------------------------------------------------
29210 Get message buffer
29211 -----------------------------------------------------------------------*/
29212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029213 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029214 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029215 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029216 {
29217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029218 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029219 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
29220 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029221 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029222 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029223 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29224 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
29225 &pBSSSes);
29226 if ( NULL == pBSSSes )
29227 {
29228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029229 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029230 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029231 }
29232 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070029233
29234 //
29235 // Don't need to fill send buffer other than header
29236 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029237 wpalMemoryCopy( pSendBuffer+usDataOffset,
29238 &halGtkOffloadGetInfoReqParams,
29239 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029240
29241 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
29242 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
29243
29244 /*-------------------------------------------------------------------------
29245 Send Get STA Request to HAL
29246 -------------------------------------------------------------------------*/
29247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29248 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029249fail:
29250 // Release the message buffer so we don't leak
29251 wpalMemoryFree(pSendBuffer);
29252
29253failRequest:
29254 //WDA should have failure check to avoid the memory leak
29255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029256}
29257
29258/**
29259 @brief Process host offload Rsp function (called when a
29260 response is being received over the bus from HAL)
29261
29262 @param pWDICtx: pointer to the WLAN DAL context
29263 pEventData: pointer to the event information structure
29264
29265 @see
29266 @return Result of the function call
29267*/
29268WDI_Status
29269WDI_ProcessGtkOffloadRsp
29270(
29271 WDI_ControlBlockType* pWDICtx,
29272 WDI_EventInfoType* pEventData
29273)
29274{
Jeff Johnson295189b2012-06-20 16:38:30 -070029275 eHalStatus halStatus;
29276 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029277 tHalGtkOffloadRspParams halGtkOffloadRspParams;
29278 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029279
29280 /*-------------------------------------------------------------------------
29281 Sanity check
29282 -------------------------------------------------------------------------*/
29283 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29284 ( NULL == pEventData->pEventData))
29285 {
29286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029288 WDI_ASSERT(0);
29289 return WDI_STATUS_E_FAILURE;
29290 }
29291
Wilson Yang00256342013-10-10 23:13:38 -070029292 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
29293
Jeff Johnson295189b2012-06-20 16:38:30 -070029294 /*-------------------------------------------------------------------------
29295 Extract response and send it to UMAC
29296 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029297 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29298 {
29299 wpalMemoryCopy( &halGtkOffloadRspParams,
29300 pEventData->pEventData,
29301 sizeof(halGtkOffloadRspParams));
29302
29303 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029304 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029305 wdiGtkOffloadRsparams.bssIdx =
29306 halGtkOffloadRspParams.bssIdx;
29307 }
29308 else
29309 {
29310 halStatus = *((eHalStatus*)pEventData->pEventData);
29311 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29312 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029313
29314 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029315 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029316
29317 return WDI_STATUS_SUCCESS;
29318}
29319
29320/**
29321 @brief Process GTK Offload Get Information Response function
29322
29323 @param pWDICtx: pointer to the WLAN DAL context
29324 pEventData: pointer to the event information structure
29325
29326 @see
29327 @return Result of the function call
29328*/
29329WDI_Status
29330WDI_ProcessGTKOffloadGetInfoRsp
29331(
29332 WDI_ControlBlockType* pWDICtx,
29333 WDI_EventInfoType* pEventData
29334)
29335{
Jeff Johnson295189b2012-06-20 16:38:30 -070029336 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029337 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029338 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29339 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029340 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029341
Jeff Johnson295189b2012-06-20 16:38:30 -070029342
29343 /*-------------------------------------------------------------------------
29344 Sanity check
29345 -------------------------------------------------------------------------*/
29346 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29347 ( NULL == pEventData->pEventData ))
29348 {
29349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029350 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029351 WDI_ASSERT(0);
29352 return WDI_STATUS_E_FAILURE;
29353 }
29354
Wilson Yang00256342013-10-10 23:13:38 -070029355 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29356
29357 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029358 Extract response and send it to UMAC
29359 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029360 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29361 {
29362 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29363 pEventData->pEventData,
29364 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029365
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029366 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029367 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029368 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29369 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29370 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29371 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29372 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29373 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29374 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29375 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029376
29377 wpalMutexAcquire(&pWDICtx->wptMutex);
29378 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29379 &pBSSSes);
29380
29381 if ( NULL == pBSSSes )
29382 {
29383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29384 "Association sequence for this BSS does not exist or "
29385 "association no longer in progress - mysterious HAL response");
29386 wpalMutexRelease(&pWDICtx->wptMutex);
29387 return WDI_STATUS_E_NOT_ALLOWED;
29388 }
29389
29390 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29391 sizeof (wpt_macAddr));
29392 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029393 }
29394 else
29395 {
29396 halStatus = *((eHalStatus*)pEventData->pEventData);
29397 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29398 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029399 /*Notify UMAC*/
29400 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29401 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029402 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029403
29404 return WDI_STATUS_SUCCESS;
29405}
29406#endif // WLAN_FEATURE_GTK_OFFLOAD
29407
29408#ifdef WLAN_WAKEUP_EVENTS
29409WDI_Status
29410WDI_ProcessWakeReasonInd
29411(
29412 WDI_ControlBlockType* pWDICtx,
29413 WDI_EventInfoType* pEventData
29414)
29415{
29416 WDI_LowLevelIndType *pWdiInd;
29417 tpWakeReasonParams pWakeReasonParams;
29418 wpt_uint32 allocSize = 0;
29419
29420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029421 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029422
29423 /*-------------------------------------------------------------------------
29424 Sanity check
29425 -------------------------------------------------------------------------*/
29426 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29427 ( NULL == pEventData->pEventData ))
29428 {
29429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029430 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029431 WDI_ASSERT( 0 );
29432 return WDI_STATUS_E_FAILURE;
29433 }
29434
29435 /*-------------------------------------------------------------------------
29436 Extract indication and send it to UMAC
29437 -------------------------------------------------------------------------*/
29438 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29439
29440 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29441
29442 //Allocate memory for WDI_WakeReasonIndType structure
29443 pWdiInd = wpalMemoryAllocate(allocSize) ;
29444
29445 if(NULL == pWdiInd)
29446 {
29447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029448 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029449 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029450 WDI_ASSERT(0);
29451 return WDI_STATUS_E_FAILURE;
29452 }
29453
29454 wpalMemoryZero(pWdiInd, allocSize);
29455
29456 /* Fill in the indication parameters*/
29457 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29458 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29459 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29460 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29461 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29462 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29463 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29464 &(pWakeReasonParams->aDataStart[0]),
29465 pWakeReasonParams->ulStoredDataLen);
29466
ltimariub77f24b2013-01-24 18:54:33 -080029467
29468 if ( pWDICtx->wdiLowLevelIndCB )
29469 {
29470 /*Notify UMAC*/
29471 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29472 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029473
29474 //Free memory allocated for WDI_WakeReasonIndType structure
29475 wpalMemoryFree(pWdiInd);
29476
29477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029478 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029479
29480 return WDI_STATUS_SUCCESS;
29481}
29482#endif // WLAN_WAKEUP_EVENTS
29483
29484void WDI_GetWcnssCompiledApiVersion
29485(
29486 WDI_WlanVersionType *pWcnssApiVersion
29487)
29488{
29489 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29490 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29491 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29492 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29493}
29494
29495/**
29496 @brief Process Set TM Level Rsp function (called when a
29497 response is being received over the bus from HAL)
29498
29499 @param pWDICtx: pointer to the WLAN DAL context
29500 pEventData: pointer to the event information structure
29501
29502 @see
29503 @return Result of the function call
29504*/
29505WDI_Status
29506WDI_ProcessSetTmLevelRsp
29507(
29508 WDI_ControlBlockType* pWDICtx,
29509 WDI_EventInfoType* pEventData
29510)
29511{
29512 WDI_Status wdiStatus;
29513 eHalStatus halStatus;
29514 WDI_SetTmLevelCb wdiSetTmLevelCb;
29515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29516
29517 /*-------------------------------------------------------------------------
29518 Sanity check
29519 -------------------------------------------------------------------------*/
29520 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29521 ( NULL == pEventData->pEventData ))
29522 {
29523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029525 WDI_ASSERT(0);
29526 return WDI_STATUS_E_FAILURE;
29527 }
29528
29529 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29530
29531 /*-------------------------------------------------------------------------
29532 Extract response and send it to UMAC
29533 -------------------------------------------------------------------------*/
29534 halStatus = *((eHalStatus*)pEventData->pEventData);
29535 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29536
29537 /*Notify UMAC*/
29538 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29539
29540 return WDI_STATUS_SUCCESS;
29541}/*WDI_ProcessSetTmLevelRsp*/
29542
29543/**
29544 @brief Process Set Thermal Mitigation level Changed request
29545
29546 @param pWDICtx: pointer to the WLAN DAL context
29547 pEventData: pointer to the event information structure
29548
29549 @see
29550 @return Result of the function call
29551*/
29552WDI_Status
29553WDI_ProcessSetTmLevelReq
29554(
29555 WDI_ControlBlockType* pWDICtx,
29556 WDI_EventInfoType* pEventData
29557)
29558{
29559 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29560 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29561 wpt_uint8* pSendBuffer = NULL;
29562 wpt_uint16 usDataOffset = 0;
29563 wpt_uint16 usSendSize = 0;
29564 tSetThermalMitgationType halTmMsg;
29565
29566 /*-------------------------------------------------------------------------
29567 Sanity check
29568 -------------------------------------------------------------------------*/
29569 if (( NULL == pEventData ) ||
29570 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29571 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29572 {
29573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029575 WDI_ASSERT(0);
29576 return WDI_STATUS_E_FAILURE;
29577 }
29578
29579 /*-----------------------------------------------------------------------
29580 Get message buffer
29581 -----------------------------------------------------------------------*/
29582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29583 sizeof(halTmMsg),
29584 &pSendBuffer, &usDataOffset, &usSendSize))||
29585 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29586 {
29587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029588 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029589 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29590 WDI_ASSERT(0);
29591 return WDI_STATUS_E_FAILURE;
29592 }
29593
29594 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29595 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29596
29597 wpalMemoryCopy( pSendBuffer+usDataOffset,
29598 &halTmMsg,
29599 sizeof(halTmMsg));
29600
29601 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29602 pWDICtx->pfncRspCB = NULL;
29603 /*-------------------------------------------------------------------------
29604 Send Get STA Request to HAL
29605 -------------------------------------------------------------------------*/
29606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29607 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29608}
29609
29610/* Fill the value from the global features enabled array to the global capabilities
29611 * bitmap struct
29612 */
29613static void
29614FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29615{
29616 wpt_int8 i;
29617 for (i=0; i<len; i++)
29618 {
29619 setFeatCaps(fCaps, enabledFeat[i]);
29620 }
29621}
29622
29623/**
29624 @brief WDI_featureCapsExchangeReq
29625 Post feature capability bitmap exchange event.
29626 Host will send its own capability to FW in this req and
29627 expect FW to send its capability back as a bitmap in Response
29628
29629 @param
29630
29631 wdiFeatureCapsExchangeCb: callback called on getting the response.
29632 It is kept to mantain similarity between WDI reqs and if needed, can
29633 be used in future. Currently, It is set to NULL
29634
29635 pUserData: user data will be passed back with the
29636 callback
29637
29638 @see
29639 @return Result of the function call
29640*/
29641WDI_Status
29642WDI_featureCapsExchangeReq
29643(
29644 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29645 void* pUserData
29646)
29647{
29648 WDI_EventInfoType wdiEventData;
29649 wpt_int32 fCapsStructSize;
29650
29651 /*------------------------------------------------------------------------
29652 Sanity Check
29653 ------------------------------------------------------------------------*/
29654 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29655 {
29656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29657 "WDI API call before module is initialized - Fail request");
29658
29659 return WDI_STATUS_E_NOT_ALLOWED;
29660 }
29661
29662 /* Allocate memory separately for global variable carrying FW caps */
29663 fCapsStructSize = sizeof(tWlanFeatCaps);
29664 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29665 if ( NULL == gpHostWlanFeatCaps )
29666 {
29667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029668 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029669 WDI_ASSERT(0);
29670 return WDI_STATUS_MEM_FAILURE;
29671 }
29672
29673 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29674
29675 /*------------------------------------------------------------------------
29676 Fill in Event data and post to the Main FSM
29677 ------------------------------------------------------------------------*/
29678 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29679 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029681 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029682 gpHostWlanFeatCaps->featCaps[0],
29683 gpHostWlanFeatCaps->featCaps[1],
29684 gpHostWlanFeatCaps->featCaps[2],
29685 gpHostWlanFeatCaps->featCaps[3]
29686 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029688 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029689 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29690 wdiEventData.pEventData = gpHostWlanFeatCaps;
29691 wdiEventData.uEventDataSize = fCapsStructSize;
29692 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29693 wdiEventData.pUserData = pUserData;
29694
29695 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29696}
29697
29698/**
Yathish9f22e662012-12-10 14:21:35 -080029699 @brief Disable Active mode offload in Host
29700
29701 @param void
29702 @see
29703 @return void
29704*/
29705void
29706WDI_disableCapablityFeature(wpt_uint8 feature_index)
29707{
29708 supportEnabledFeatures[feature_index] = 0;
29709 return;
29710}
29711
29712/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029713 @brief Process Host-FW Capability Exchange Request function
29714
29715 @param pWDICtx: pointer to the WLAN DAL context
29716 pEventData: pointer to the event information structure
29717
29718 @see
29719 @return Result of the function call
29720*/
29721WDI_Status
29722WDI_ProcessFeatureCapsExchangeReq
29723(
29724 WDI_ControlBlockType* pWDICtx,
29725 WDI_EventInfoType* pEventData
29726)
29727{
29728 wpt_uint8* pSendBuffer = NULL;
29729 wpt_uint16 usDataOffset = 0;
29730 wpt_uint16 usSendSize = 0;
29731 wpt_uint16 usLen = 0;
29732
29733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29734
29735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029736 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029737
29738 /*-------------------------------------------------------------------------
29739 Sanity check
29740 -------------------------------------------------------------------------*/
29741 /* Call back function is NULL since not required for cap exchange req */
29742 if (( NULL == pEventData ) ||
29743 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29744 {
29745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029747 WDI_ASSERT(0);
29748 return WDI_STATUS_E_FAILURE;
29749 }
29750
29751 /*-----------------------------------------------------------------------
29752 Get message buffer
29753 -----------------------------------------------------------------------*/
29754 usLen = sizeof(tWlanFeatCaps);
29755
29756 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29757 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29758 usLen,
29759 &pSendBuffer, &usDataOffset, &usSendSize))||
29760 ( usSendSize < (usDataOffset + usLen )))
29761 {
29762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029763 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029764 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29765 WDI_ASSERT(0);
29766 return WDI_STATUS_E_FAILURE;
29767 }
29768
29769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029770 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029771 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29772 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29773 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29774 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29775 );
29776
29777 /* Copy host caps after the offset in the send buffer */
29778 wpalMemoryCopy( pSendBuffer+usDataOffset,
29779 (tWlanFeatCaps *)pEventData->pEventData,
29780 usLen);
29781
29782 /*-------------------------------------------------------------------------
29783 Send Start Request to HAL
29784 -------------------------------------------------------------------------*/
29785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29786 (WDI_StartRspCb)pEventData->pCBfnc,
29787 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29788
29789}/*WDI_ProcessFeatureCapsExchangeReq*/
29790
29791/**
29792 @brief Process Host-FW Capability Exchange Response function
29793
29794 @param pWDICtx: pointer to the WLAN DAL context
29795 pEventData: pointer to the event information structure
29796
29797 @see
29798 @return Result of the function call
29799*/
29800WDI_Status
29801WDI_ProcessFeatureCapsExchangeRsp
29802(
29803 WDI_ControlBlockType* pWDICtx,
29804 WDI_EventInfoType* pEventData
29805)
29806{
29807 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29808 wpt_int32 fCapsStructSize;
29809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29810
29811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029812 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029813
29814 /*-------------------------------------------------------------------------
29815 Sanity check
29816 -------------------------------------------------------------------------*/
29817 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29818 ( NULL == pEventData->pEventData ))
29819 {
29820 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029822 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029823 WDI_ASSERT(0);
29824 return WDI_STATUS_E_FAILURE;
29825 }
29826
29827 /* Allocate memory separately for global variable carrying FW caps */
29828 fCapsStructSize = sizeof(tWlanFeatCaps);
29829 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29830 if ( NULL == gpFwWlanFeatCaps )
29831 {
29832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029833 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029834 WDI_ASSERT(0);
29835 return WDI_STATUS_MEM_FAILURE;
29836 }
29837
29838 /*-------------------------------------------------------------------------
29839 Unpack HAL Response Message - the header was already extracted by the
29840 main Response Handling procedure
29841 -------------------------------------------------------------------------*/
29842 /*-------------------------------------------------------------------------
29843 Extract response and send it to UMAC
29844 -------------------------------------------------------------------------*/
29845
29846 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29847 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029849 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029850 gpFwWlanFeatCaps->featCaps[0],
29851 gpFwWlanFeatCaps->featCaps[1],
29852 gpFwWlanFeatCaps->featCaps[2],
29853 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029854 );
Mukul Sharmaf1bd9322015-10-20 16:03:42 +053029855
Ratheesh S P36dbc932015-08-07 14:28:57 +053029856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029857 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029858 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29859
29860 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29861 if (wdiFeatureCapsExchangeCb != NULL)
29862 wdiFeatureCapsExchangeCb(NULL, NULL);
29863
29864 return WDI_STATUS_SUCCESS;
29865}
29866
Mohit Khanna4a70d262012-09-11 16:30:12 -070029867#ifdef WLAN_FEATURE_11AC
29868WDI_Status
29869WDI_ProcessUpdateVHTOpModeRsp
29870(
29871 WDI_ControlBlockType* pWDICtx,
29872 WDI_EventInfoType* pEventData
29873)
29874{
29875 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29876 WDI_Status wdiStatus;
29877 eHalStatus halStatus;
29878
29879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29880
29881 /*-------------------------------------------------------------------------
29882 Sanity check
29883 -------------------------------------------------------------------------*/
29884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29885 ( NULL == pEventData->pEventData))
29886 {
29887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029888 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029889 WDI_ASSERT(0);
29890 return WDI_STATUS_E_FAILURE;
29891 }
29892 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29893
29894 /*-------------------------------------------------------------------------
29895 Extract response and send it to UMAC
29896 -------------------------------------------------------------------------*/
29897 halStatus = *((eHalStatus*)pEventData->pEventData);
29898 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29899
29900 /*Notify UMAC*/
29901 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29902
29903 return WDI_STATUS_SUCCESS;
29904}
29905#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029906/**
29907 @brief WDI_getHostWlanFeatCaps
29908 WDI API that returns whether the feature passed to it as enum value in
29909 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29910 variable storing host capability bitmap to find this. This can be used by
29911 other moduels to decide certain things like call different APIs based on
29912 whether a particular feature is supported.
29913
29914 @param
29915
29916 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29917
29918 @see
29919 @return
29920 0 - if the feature is NOT supported in host
29921 any non-zero value - if the feature is SUPPORTED in host.
29922*/
29923wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29924{
29925 wpt_uint8 featSupported = 0;
29926 if (gpHostWlanFeatCaps != NULL)
29927 {
29928 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29929 }
29930 else
29931 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029933 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029934 }
29935 return featSupported;
29936}
29937
29938/**
29939 @brief WDI_getFwWlanFeatCaps
29940 WDI API that returns whether the feature passed to it as enum value in
29941 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29942 variable storing host capability bitmap to find this. This can be used by
29943 other moduels to decide certain things like call different APIs based on
29944 whether a particular feature is supported.
29945
29946 @param
29947
29948 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29949 in wlan_hal_msg.h.
29950
29951 @see
29952 @return
29953 0 - if the feature is NOT supported in FW
29954 any non-zero value - if the feature is SUPPORTED in FW.
29955*/
29956wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29957{
29958 wpt_uint8 featSupported = 0;
29959 if (gpFwWlanFeatCaps != NULL)
29960 {
29961 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29962 }
29963 else
29964 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029966 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029967 }
29968 return featSupported;
29969}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029970
Katya Nigamf0511f62015-05-05 16:40:57 +053029971wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29972{
29973 /* 5gHz Channel */
29974 if( channel >= 34 && channel <= 165 )
29975 {
29976 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29977 {
29978 if ( channel== 36 || channel == 52 || channel == 100 ||
29979 channel == 116 || channel == 149 )
29980 {
29981 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29982 }
29983 else if ( channel == 40 || channel == 56 || channel == 104 ||
29984 channel == 120 || channel == 153 )
29985 {
29986 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
29987 }
29988 else if ( channel == 44 || channel == 60 || channel == 108 ||
29989 channel == 124 || channel == 157 )
29990 {
29991 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
29992 }
29993 else if ( channel == 48 || channel == 64 || channel == 112 ||
29994 channel == 128 || channel == 144 || channel == 161 )
29995 {
29996 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
29997 }
29998 else if ( channel == 165 )
29999 {
30000 return PHY_SINGLE_CHANNEL_CENTERED;
30001 }
30002 }
30003
30004 else
30005 {
30006 if ( channel== 40 || channel == 48 || channel == 56 ||
30007 channel == 64 || channel == 104 || channel == 112 ||
30008 channel == 120 || channel == 128 || channel == 136 ||
30009 channel == 144 || channel == 153 || channel == 161 )
30010 {
30011 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30012 }
30013 else if ( channel== 36 || channel == 44 || channel == 52 ||
30014 channel == 60 || channel == 100 || channel == 108 ||
30015 channel == 116 || channel == 124 || channel == 132 ||
30016 channel == 140 || channel == 149 || channel == 157 )
30017 {
30018 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30019 }
30020 else if ( channel == 165 )
30021 {
30022 return PHY_SINGLE_CHANNEL_CENTERED;
30023 }
30024 }
30025 }
30026
30027 /* 2.4Ghz Channel */
30028 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
30029 {
30030 if (channel >= 1 && channel <= 7)
30031 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30032 else if (channel >= 8 && channel <= 13)
30033 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30034 else if (channel ==14)
30035 return PHY_SINGLE_CHANNEL_CENTERED;
30036 }
30037 return PHY_SINGLE_CHANNEL_CENTERED;
30038}
30039
Mohit Khanna4a70d262012-09-11 16:30:12 -070030040#ifdef WLAN_FEATURE_11AC
30041WDI_Status
30042WDI_ProcessUpdateVHTOpModeReq
30043(
30044 WDI_ControlBlockType* pWDICtx,
30045 WDI_EventInfoType* pEventData
30046)
30047{
30048 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
30049 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
30050 wpt_uint8* pSendBuffer = NULL;
30051 wpt_uint16 usDataOffset = 0;
30052 wpt_uint16 usSendSize = 0;
30053
30054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30055
30056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030057 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030058
30059 /*-------------------------------------------------------------------------
30060 Sanity check
30061 -------------------------------------------------------------------------*/
30062 if (( NULL == pEventData ) ||
30063 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
30064 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
30065 {
30066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030067 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030068 WDI_ASSERT(0);
30069 return WDI_STATUS_E_FAILURE;
30070 }
30071
30072 /*-----------------------------------------------------------------------
30073 Get message buffer
30074 -----------------------------------------------------------------------*/
30075 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
30076 sizeof(WDI_UpdateVHTOpMode),
30077 &pSendBuffer, &usDataOffset, &usSendSize))||
30078 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
30079 {
30080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30081 "Unable to get send buffer in update vht opMode req");
30082 WDI_ASSERT(0);
30083 return WDI_STATUS_E_FAILURE;
30084 }
30085
30086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030087 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030088
30089 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
30090 sizeof(WDI_UpdateVHTOpMode));
30091
30092 /*-------------------------------------------------------------------------
30093 Send Start Request to HAL
30094 -------------------------------------------------------------------------*/
30095 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30096 wdiVHTOpModeCb,
30097 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
30098
30099}
30100
30101WDI_Status
30102WDI_UpdateVHTOpModeReq
30103(
30104 WDI_UpdateVHTOpMode *pData,
30105 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
30106 void* pUserData
30107)
30108{
30109 WDI_EventInfoType wdiEventData;
30110
30111 /*------------------------------------------------------------------------
30112 Sanity Check
30113 ------------------------------------------------------------------------*/
30114 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30115 {
30116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30117 "WDI API call before module is initialized - Fail request");
30118
30119 return WDI_STATUS_E_NOT_ALLOWED;
30120 }
30121
30122 /*------------------------------------------------------------------------
30123 Fill in Event data and post to the Main FSM
30124 ------------------------------------------------------------------------*/
30125 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
30126 wdiEventData.pEventData = pData;
30127 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
30128 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
30129 wdiEventData.pUserData = pUserData;
30130
30131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030132 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030133
30134 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30135
30136}
30137#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030138
30139/**
30140 @brief WDI_TransportChannelDebug -
30141 Display DXE Channel debugging information
30142 User may request to display DXE channel snapshot
30143 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030144
Jeff Johnsonb88db982012-12-10 13:34:59 -080030145 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053030146 @param debugFlags : Enable stall detect features
30147 defined by WPAL_DeviceDebugFlags
30148 These features may effect
30149 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030150 @see
30151 @return none
30152*/
30153void WDI_TransportChannelDebug
30154(
30155 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053030156 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030157)
30158{
Mihir Shete40a55652014-03-02 14:14:47 +053030159 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030160 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070030161}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030162/**
30163 @brief WDI_SsrTimerCB
30164 Callback function for SSR timer, if this is called then the graceful
30165 shutdown for Riva did not happen.
30166
30167 @param pUserData : user data to timer
30168
30169 @see
30170 @return none
30171*/
30172void
30173WDI_SsrTimerCB
30174(
30175 void *pUserData
30176)
30177{
30178 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
30179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30180
30181 if (NULL == pWDICtx )
30182 {
30183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030184 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030185 WDI_ASSERT(0);
30186 return;
30187 }
30188 wpalRivaSubystemRestart();
30189
30190 return;
30191
30192}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070030193
30194/**
30195 @brief WDI_SetEnableSSR -
30196 This API is called to enable/disable SSR on WDI timeout.
30197
30198 @param enableSSR : enable/disable SSR
30199
30200 @see
30201 @return none
30202*/
30203void WDI_SetEnableSSR(wpt_boolean enableSSR)
30204{
30205 gWDICb.bEnableSSR = enableSSR;
30206}
Leo Chang9056f462013-08-01 19:21:11 -070030207
30208
30209#ifdef FEATURE_WLAN_LPHB
30210/**
Leo Changd9df8aa2013-09-26 13:32:26 -070030211 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070030212 This function will be invoked when FW detects low power
30213 heart beat failure
30214
30215 @param pWDICtx : wdi context
30216 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070030217 @see
30218 @return Result of the function call
30219*/
30220WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070030221WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070030222(
30223 WDI_ControlBlockType* pWDICtx,
30224 WDI_EventInfoType* pEventData
30225)
30226{
30227 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070030228 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070030229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30230
30231 /*-------------------------------------------------------------------------
30232 Sanity check
30233 -------------------------------------------------------------------------*/
30234 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30235 (NULL == pEventData->pEventData))
30236 {
30237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30238 "%s: Invalid parameters", __func__);
30239 WDI_ASSERT(0);
30240 return WDI_STATUS_E_FAILURE;
30241 }
30242
30243 /*-------------------------------------------------------------------------
30244 Extract indication and send it to UMAC
30245 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070030246 wpalMemoryCopy(&lphbIndicationParam,
30247 pEventData->pEventData,
30248 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070030249
Leo Changd9df8aa2013-09-26 13:32:26 -070030250 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070030251 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030252 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030253 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030254 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030255 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070030256 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070030257 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070030258 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070030259 /*Notify UMAC*/
30260 if (pWDICtx->wdiLowLevelIndCB)
30261 {
30262 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30263 }
30264
30265 return WDI_STATUS_SUCCESS;
30266}
30267
30268/**
30269 @brief WDI_ProcessLphbCfgRsp -
30270 LPHB configuration response from FW
30271
30272 @param pWDICtx : wdi context
30273 pEventData : indication data
30274
30275 @see
30276 @return Result of the function call
30277*/
30278WDI_Status WDI_ProcessLphbCfgRsp
30279(
30280 WDI_ControlBlockType* pWDICtx,
30281 WDI_EventInfoType* pEventData
30282)
30283{
30284 WDI_Status wdiStatus;
30285 eHalStatus halStatus;
30286 WDI_LphbCfgCb wdiLphbCfgCb;
30287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30288
30289 /*-------------------------------------------------------------------------
30290 Sanity check
30291 -------------------------------------------------------------------------*/
30292 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30293 (NULL == pEventData->pEventData))
30294 {
30295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30296 "%s: Invalid parameters", __func__);
30297 WDI_ASSERT(0);
30298 return WDI_STATUS_E_FAILURE;
30299 }
30300
30301 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30302
30303 /*-------------------------------------------------------------------------
30304 Extract response and send it to UMAC
30305 -------------------------------------------------------------------------*/
30306 halStatus = *((eHalStatus*)pEventData->pEventData);
30307 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30308
30309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30310 "LPHB Cfg Rsp Return status %d", wdiStatus);
30311 /*Notify UMAC*/
30312 if (NULL != wdiLphbCfgCb)
30313 {
30314 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30315 }
30316
30317 return WDI_STATUS_SUCCESS;
30318}
30319
30320/**
30321 @brief WDI_ProcessLPHBConfReq -
30322 LPHB configuration request to FW
30323
30324 @param pWDICtx : wdi context
30325 pEventData : indication data
30326
30327 @see
30328 @return none
30329*/
30330WDI_Status WDI_ProcessLPHBConfReq
30331(
30332 WDI_ControlBlockType* pWDICtx,
30333 WDI_EventInfoType* pEventData
30334)
30335{
30336 WDI_LPHBReq *pLphbReqParams;
30337 WDI_Status wdiStatus;
30338 wpt_uint8* pSendBuffer = NULL;
30339 wpt_uint16 usDataOffset = 0;
30340 wpt_uint16 usSendSize = 0;
30341 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30343
30344 /*-------------------------------------------------------------------------
30345 Sanity check
30346 -------------------------------------------------------------------------*/
30347 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30348 {
30349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30350 "%s: Invalid parameters in Suspend ind",__func__);
30351 WDI_ASSERT(0);
30352 return WDI_STATUS_E_FAILURE;
30353 }
30354
30355 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30356
30357 /*-----------------------------------------------------------------------
30358 Get message buffer
30359 -----------------------------------------------------------------------*/
30360 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30361 WDI_LPHB_CFG_REQ,
30362 sizeof(tHalLowPowerHeartBeatReqMsg),
30363 &pSendBuffer, &usDataOffset, &usSendSize))||
30364 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30365 {
30366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30367 "Unable to get send buffer in LPHB Ind ");
30368 WDI_ASSERT(0);
30369 return WDI_STATUS_E_FAILURE;
30370 }
30371
30372 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30373 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30374
30375 halLphbReqRarams->lowPowerHeartBeatCmdType =
30376 (tANI_U16)(++pLphbReqParams->cmd);
30377 switch ((tANI_U16)pLphbReqParams->cmd)
30378 {
30379 case WDI_LPHB_SET_EN_PARAMS_INDID:
30380 halLphbReqRarams->sessionIdx =
30381 pLphbReqParams->params.lphbEnableReq.session;
30382 halLphbReqRarams->options.control.heartBeatEnable =
30383 pLphbReqParams->params.lphbEnableReq.enable;
30384 halLphbReqRarams->options.control.heartBeatType =
30385 pLphbReqParams->params.lphbEnableReq.item;
30386 break;
30387
30388 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30389 halLphbReqRarams->sessionIdx =
30390 pLphbReqParams->params.lphbTcpParamReq.session;
30391 halLphbReqRarams->options.tcpParams.timeOutSec =
30392 pLphbReqParams->params.lphbTcpParamReq.timeout;
30393 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30394 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30395 sizeof(v_U32_t));
30396 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30397 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30398 sizeof(v_U32_t));
30399
30400 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30401 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30402 WDI_MAC_ADDR_LEN);
30403
30404 halLphbReqRarams->options.tcpParams.hostPort =
30405 pLphbReqParams->params.lphbTcpParamReq.src_port;
30406 halLphbReqRarams->options.tcpParams.destPort =
30407 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030408 halLphbReqRarams->options.tcpParams.timePeriodSec =
30409 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30410 halLphbReqRarams->options.tcpParams.tcpSn =
30411 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030412 break;
30413
30414 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30415 halLphbReqRarams->sessionIdx =
30416 pLphbReqParams->params.lphbTcpFilterReq.session;
30417 halLphbReqRarams->options.tcpUdpFilter.offset =
30418 pLphbReqParams->params.lphbTcpFilterReq.offset;
30419 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30420 pLphbReqParams->params.lphbTcpFilterReq.length;
30421 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30422 pLphbReqParams->params.lphbTcpFilterReq.filter,
30423 WDI_LPHB_FILTER_LEN);
30424 break;
30425
30426 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30427 halLphbReqRarams->sessionIdx =
30428 pLphbReqParams->params.lphbUdpParamReq.session;
30429 halLphbReqRarams->options.udpParams.timeOutSec =
30430 pLphbReqParams->params.lphbUdpParamReq.timeout;
30431 halLphbReqRarams->options.udpParams.timePeriodSec =
30432 pLphbReqParams->params.lphbUdpParamReq.interval;
30433 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30434 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30435 sizeof(v_U32_t));
30436 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30437 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30438 sizeof(v_U32_t));
30439
30440 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30441 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30442 WDI_MAC_ADDR_LEN);
30443
30444 halLphbReqRarams->options.udpParams.hostPort =
30445 pLphbReqParams->params.lphbUdpParamReq.src_port;
30446 halLphbReqRarams->options.udpParams.destPort =
30447 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30448 break;
30449
30450 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30451 halLphbReqRarams->sessionIdx =
30452 pLphbReqParams->params.lphbUdpFilterReq.session;
30453 halLphbReqRarams->options.tcpUdpFilter.offset =
30454 pLphbReqParams->params.lphbUdpFilterReq.offset;
30455 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30456 pLphbReqParams->params.lphbUdpFilterReq.length;
30457 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30458 pLphbReqParams->params.lphbUdpFilterReq.filter,
30459 WDI_LPHB_FILTER_LEN);
30460 break;
30461
30462 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30463 /* NA */
30464 break;
30465
30466 default:
30467 break;
30468 }
30469
30470 /*-------------------------------------------------------------------------
30471 Send Suspend Request to HAL
30472 -------------------------------------------------------------------------*/
30473 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30474 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30475
30476 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30477 usSendSize, pWDICtx->pfncRspCB,
30478 pWDICtx->pReqStatusUserData,
30479 WDI_LPHB_CFG_RESP);
30480
30481 return wdiStatus;
30482}
30483
30484/**
30485 @brief WDI_LPHBConfReq -
30486 LPHB configuration request API
30487
30488 @param lphbconfParam : configuration parameter
30489 usrData : client context
30490 lphbCfgCb : callback function pointer
30491
30492 @see
30493 @return Success or fail status code
30494*/
30495WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30496 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30497{
30498 WDI_EventInfoType wdiEventData;
30499
30500 /*------------------------------------------------------------------------
30501 Sanity Check
30502 ------------------------------------------------------------------------*/
30503 if (eWLAN_PAL_FALSE == gWDIInitialized)
30504 {
30505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30506 "WDI API call before module is initialized - Fail request");
30507
30508 return WDI_STATUS_E_NOT_ALLOWED;
30509 }
30510
30511 /*------------------------------------------------------------------------
30512 Fill in Event data and post to the Main FSM
30513 ------------------------------------------------------------------------*/
30514 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30515 wdiEventData.pEventData = lphbconfParam;
30516 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30517 wdiEventData.pCBfnc = lphbCfgCb;
30518 wdiEventData.pUserData = usrData;
30519
30520 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30521}
30522#endif /* FEATURE_WLAN_LPHB */
30523
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030524/**
30525 @brief WDI_ProcessIbssPeerInactivityInd
30526 Process peer inactivity indication coming from HAL
30527
30528 @param pWDICtx: pointer to the WLAN DAL context
30529 pEventData: pointer to the event information structure
30530 @see
30531 @return Result of the function call
30532*/
30533WDI_Status
30534WDI_ProcessIbssPeerInactivityInd
30535(
30536 WDI_ControlBlockType* pWDICtx,
30537 WDI_EventInfoType* pEventData
30538)
30539{
30540 WDI_LowLevelIndType wdiInd;
30541 tIbssPeerInactivityIndMsg halIbssIndMsg;
30542
30543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30544
30545 /*-------------------------------------------------------------------------
30546 Sanity check
30547 -------------------------------------------------------------------------*/
30548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30549 ( NULL == pEventData->pEventData ))
30550 {
30551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30552 "%s: Invalid parameters", __func__);
30553 WDI_ASSERT( 0 );
30554 return WDI_STATUS_E_FAILURE;
30555 }
30556
30557 /*-------------------------------------------------------------------------
30558 Extract indication and send it to UMAC
30559 -------------------------------------------------------------------------*/
30560 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30561 pEventData->pEventData,
30562 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30563
30564 /*Fill in the indication parameters*/
30565 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30566
30567 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30568 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30569
30570 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30571 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30572
30573 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30574 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30575 sizeof(tSirMacAddr));
30576
30577 /*Notify UMAC*/
30578 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30579
30580 return WDI_STATUS_SUCCESS;
30581
30582} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030583
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030584/**
30585*@brief WDI_RateUpdateInd will be called when the upper MAC
30586 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030587
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030588
30589 @param wdiRateUpdateIndParams:
30590
30591
30592 @see
30593 @return Result of the function call
30594*/
30595WDI_Status
30596WDI_RateUpdateInd
30597(
30598 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30599)
30600{
30601 WDI_EventInfoType wdiEventData;
30602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30603
30604 /*------------------------------------------------------------------------
30605 Sanity Check
30606 ------------------------------------------------------------------------*/
30607 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30608 {
30609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30610 "WDI API call before module is initialized - Fail request");
30611
30612 return WDI_STATUS_E_NOT_ALLOWED;
30613 }
30614
30615 /*------------------------------------------------------------------------
30616 Fill in Event data and post to the Main FSM
30617 ------------------------------------------------------------------------*/
30618 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30619 wdiEventData.pEventData = wdiRateUpdateIndParams;
30620 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30621 wdiEventData.pCBfnc = NULL;
30622 wdiEventData.pUserData = NULL;
30623
30624 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30625
30626}/* WDI_RateUpdateInd */
30627
30628/**
30629 @brief Process Rate Update Indication and post it to HAL
30630
30631 @param pWDICtx: pointer to the WLAN DAL context
30632 pEventData: pointer to the event information structure
30633
30634 @see
30635 @return Result of the function call
30636*/
30637WDI_Status
30638WDI_ProcessRateUpdateInd
30639(
30640 WDI_ControlBlockType* pWDICtx,
30641 WDI_EventInfoType* pEventData
30642)
30643{
30644 wpt_uint8* pSendBuffer = NULL;
30645 wpt_uint16 usDataOffset = 0;
30646 wpt_uint16 usSendSize = 0;
30647 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30648 tHalRateUpdateInd *pRateUpdateInd;
30649 WDI_Status wdiStatus;
30650
30651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30652
30653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30654 "%s", __func__);
30655
30656 /*-------------------------------------------------------------------------
30657 Sanity check
30658 -------------------------------------------------------------------------*/
30659 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30660 {
30661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30662 "%s: Invalid parameters", __func__);
30663 WDI_ASSERT(0);
30664 return WDI_STATUS_E_FAILURE;
30665 }
30666 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30667 /*-----------------------------------------------------------------------
30668 Get message buffer
30669 -----------------------------------------------------------------------*/
30670
30671 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30672 WDI_RATE_UPDATE_IND,
30673 sizeof(tHalRateUpdateParams),
30674 &pSendBuffer, &usDataOffset, &usSendSize))||
30675 ( usSendSize < (usDataOffset +
30676 sizeof(tHalRateUpdateParams) )))
30677 {
30678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30679 "Unable to get send buffer in Rate Update Indication %p ",
30680 pEventData);
30681 WDI_ASSERT(0);
30682 return WDI_STATUS_E_FAILURE;
30683 }
30684
30685 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30686
30687 /* Copy the bssid */
30688 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30689 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30690
30691 /* Copy the tx flags */
30692 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30693 pwdiRateUpdateInd->ucastDataRateTxFlag;
30694 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30695 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30696 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30697 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30698 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30699 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30700
30701 /* Copy the tx rates */
30702 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30703 pwdiRateUpdateInd->ucastDataRate;
30704 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30705 pwdiRateUpdateInd->reliableMcastDataRate;
30706 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30707 pwdiRateUpdateInd->mcastDataRate24GHz;
30708 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30709 pwdiRateUpdateInd->mcastDataRate5GHz;
30710
30711 /*-------------------------------------------------------------------------
30712 Send Rate Update Indication to HAL
30713 -------------------------------------------------------------------------*/
30714 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30715 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30716
30717 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30718
30719 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30720 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30721
30722} /* WDI_ProcessRateUpdateInd */
30723
30724#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030725/**
30726 @brief Process stop batch indication from WDA
30727
30728 @param pWDICtx: pointer to the WLAN DAL context
30729 pEventData: pointer to the event information structure
30730
30731 @see
30732 @return Result of the function call
30733*/
30734WDI_Status
30735WDI_ProcessStopBatchScanInd
30736(
30737 WDI_ControlBlockType* pWDICtx,
30738 WDI_EventInfoType* pEventData
30739)
30740{
30741 wpt_uint8* pSendBuffer = NULL;
30742 wpt_uint16 usDataOffset = 0;
30743 wpt_uint16 usSendSize = 0;
30744 WDI_Status wdiStatus;
30745 tHalBatchScanStopIndParam *pHalInd = NULL;
30746 WDI_StopBatchScanIndType *pWdiInd = NULL;
30747
30748
30749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30750
30751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30752 "%s", __func__);
30753
30754 /*-------------------------------------------------------------------------
30755 Sanity check
30756 -------------------------------------------------------------------------*/
30757
30758 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30759 {
30760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30761 "%s: Invalid parameters", __func__);
30762 WDI_ASSERT(0);
30763 return WDI_STATUS_E_FAILURE;
30764 }
30765 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30766 /*-----------------------------------------------------------------------
30767 Get message buffer
30768 -----------------------------------------------------------------------*/
30769
30770 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30771 WDI_STOP_BATCH_SCAN_IND,
30772 sizeof(tHalBatchScanStopIndParam),
30773 &pSendBuffer, &usDataOffset, &usSendSize))||
30774 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30775 {
30776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30777 "Unable to get send buffer in stop batch scan ind %p ",
30778 pEventData);
30779 WDI_ASSERT(0);
30780 return WDI_STATUS_E_FAILURE;
30781 }
30782
30783 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30784 pHalInd->param = pWdiInd->param;
30785
30786 pWDICtx->pReqStatusUserData = NULL;
30787 pWDICtx->pfncRspCB = NULL;
30788 /*-------------------------------------------------------------------------
30789 Send Stop batch scan indication to HAL
30790 -------------------------------------------------------------------------*/
30791 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30792 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30793}
30794
30795/**
30796 @brief This API is called to trigger batch scan results from FW
30797
30798 @param pWDICtx: pointer to the WLAN DAL context
30799 pEventData: pointer to the event information structure
30800
30801 @see
30802 @return Result of the function call
30803*/
30804WDI_Status
30805WDI_ProcessTriggerBatchScanResultInd
30806(
30807 WDI_ControlBlockType* pWDICtx,
30808 WDI_EventInfoType* pEventData
30809)
30810{
30811 WDI_Status wdiStatus;
30812 wpt_uint8* pSendBuffer = NULL;
30813 wpt_uint16 usDataOffset = 0;
30814 wpt_uint16 usSendSize = 0;
30815 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30816 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30817
30818
30819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30820
30821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30822 "%s", __func__);
30823
30824 /*-------------------------------------------------------------------------
30825 Sanity check
30826 -------------------------------------------------------------------------*/
30827
30828 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30829 {
30830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30831 "%s: Invalid parameters", __func__);
30832 WDI_ASSERT(0);
30833 return WDI_STATUS_E_FAILURE;
30834 }
30835 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30836 /*-----------------------------------------------------------------------
30837 Get message buffer
30838 -----------------------------------------------------------------------*/
30839
30840 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30841 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30842 sizeof(tHalBatchScanTriggerResultParam),
30843 &pSendBuffer, &usDataOffset, &usSendSize))||
30844 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30845 {
30846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30847 "Unable to get send buffer in stop batch scan ind %p ",
30848 pEventData);
30849 WDI_ASSERT(0);
30850 return WDI_STATUS_E_FAILURE;
30851 }
30852
30853 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30854 pHalInd->param = pWdiInd->param;
30855
30856 pWDICtx->pReqStatusUserData = NULL;
30857 pWDICtx->pfncRspCB = NULL;
30858 /*-------------------------------------------------------------------------
30859 Send trigger batch scan result indication to HAL
30860 -------------------------------------------------------------------------*/
30861 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30862 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30863}
30864
30865
30866/**
30867 @brief Process set batch scan response from FW
30868
30869 @param pWDICtx: pointer to the WLAN DAL context
30870 pEventData: pointer to the event information structure
30871
30872 @see
30873 @return Result of the function call
30874*/
30875WDI_Status
30876WDI_ProcessSetBatchScanRsp
30877(
30878 WDI_ControlBlockType* pWDICtx,
30879 WDI_EventInfoType* pEventData
30880)
30881{
30882 WDI_SetBatchScanCb wdiSetBatchScanCb;
30883 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30884
30885 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30887
30888 /*sanity check*/
30889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30890 ( NULL == pEventData->pEventData))
30891 {
30892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30893 "%s: Invalid parameters", __func__);
30894 WDI_ASSERT(0);
30895 return WDI_STATUS_E_FAILURE;
30896 }
30897
30898 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30899 if ( NULL == wdiSetBatchScanCb)
30900 {
30901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30902 "%s: call back function is NULL", __func__);
30903 WDI_ASSERT(0);
30904 return WDI_STATUS_E_FAILURE;
30905 }
30906
30907 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30908
30909 if (NULL == pSetBatchScanRsp)
30910 {
30911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030912 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030913 pWDICtx, pEventData, pEventData->pEventData);
30914 WDI_ASSERT(0);
30915 return WDI_STATUS_E_FAILURE;
30916 }
30917
Sunil Duttbd736ed2014-05-26 21:19:41 +053030918 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030919 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30920
30921 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30922
Sunil Duttbd736ed2014-05-26 21:19:41 +053030923 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030924 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30925
30926 wpalMemoryFree(pSetBatchScanRsp);
30927
30928 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030929}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030930
30931/**
30932 @brief Process batch scan result indication from FW
30933
30934 @param pWDICtx: pointer to the WLAN DAL context
30935 pEventData: pointer to the event information structure
30936
30937 @see
30938 @return Result of the function call
30939*/
30940WDI_Status
30941WDI_ProcessBatchScanResultInd
30942(
30943 WDI_ControlBlockType* pWDICtx,
30944 WDI_EventInfoType* pEventData
30945)
30946{
30947 void *pBatchScanResultInd;
30948 WDI_LowLevelIndType wdiInd;
30949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30950
Sunil Duttbd736ed2014-05-26 21:19:41 +053030951 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030952 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30953 ( NULL == pEventData->pEventData))
30954 {
30955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30956 "%s: Invalid parameters", __func__);
30957 WDI_ASSERT(0);
30958 return WDI_STATUS_E_FAILURE;
30959 }
30960
Sunil Duttbd736ed2014-05-26 21:19:41 +053030961 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030962 pBatchScanResultInd = (void *)pEventData->pEventData;
30963
Sunil Duttbd736ed2014-05-26 21:19:41 +053030964 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030965 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30966
30967 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30968
Sunil Duttbd736ed2014-05-26 21:19:41 +053030969 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030970 if (pWDICtx->wdiLowLevelIndCB)
30971 {
30972 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30973 }
30974 else
30975 {
30976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30977 "%s: WDILowLevelIndCb is null", __func__);
30978 WDI_ASSERT(0);
30979 return WDI_STATUS_E_FAILURE;
30980 }
30981
30982 return WDI_STATUS_SUCCESS;
30983} /*End of WDI_ProcessBatchScanResultInd*/
30984
Sunil Duttbd736ed2014-05-26 21:19:41 +053030985#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30986/**
30987 @brief Process Link Layer Statistics Result indication from FW
30988
30989 @param pWDICtx: pointer to the WLAN DAL context
30990 pEventData: pointer to the event information structure
30991
30992 @see
30993 @return Result of the function call
30994*/
30995WDI_Status
30996WDI_ProcessLinkLayerStatsResultsInd
30997(
30998 WDI_ControlBlockType* pWDICtx,
30999 WDI_EventInfoType* pEventData
31000)
31001{
31002 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053031003 WDI_LLstatsResultsType *halLLStatsResults;
31004 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031005 WDI_LowLevelIndType wdiInd;
31006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31007
31008 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31009 "%s: Event RESULTS Indication", __func__);
31010
31011 /* sanity check */
31012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31013 ( NULL == pEventData->pEventData))
31014 {
31015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31016 "%s: Invalid parameters", __func__);
31017 WDI_ASSERT(0);
31018 return WDI_STATUS_E_FAILURE;
31019 }
31020
31021 /* extract response and send it to UMAC */
31022 pLinkLayerStatsInd = (void *)pEventData->pEventData;
31023
31024 /* Fill in the indication parameters */
31025 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
31026
Dino Mycled3d50022014-07-07 12:58:25 +053031027 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
31028 = pLinkLayerStatsInd;
31029
31030 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
31031
31032
31033 /* Need to fill in the MAC address */
31034 if ( WDI_STATUS_SUCCESS !=
31035 WDI_STATableGetStaMacAddr(pWDICtx,
31036 halLLStatsResults->iface_id,
31037 &macAddr))
31038 {
31039 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31040 " ifaceId: %u does not exist in the WDI Station Table",
31041 halLLStatsResults->iface_id);
31042
31043 return WDI_STATUS_E_FAILURE;
31044 }
31045 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
31046 macAddr, WDI_MAC_ADDR_LEN);
31047
31048 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31049 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
31050 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053031051
31052 /* Notify UMAC */
31053 if (pWDICtx->wdiLowLevelIndCB)
31054 {
31055 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31056 }
31057 else
31058 {
31059 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31060 "%s: WDILowLevelIndCb is null", __func__);
31061 WDI_ASSERT(0);
31062 return WDI_STATUS_E_FAILURE;
31063 }
31064
31065 return WDI_STATUS_SUCCESS;
31066} /* End of WDI_ProcessLinkLayerStatsResultsInd */
31067#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
31068
Rajeev79dbe4c2013-10-05 11:03:42 +053031069/**
31070 @brief WDI_ProcessSetBatchScanReq -
31071 Set batch scan request to FW
31072
31073 @param pWDICtx : wdi context
31074 pEventData : indication data
31075
31076 @see
31077 @return none
31078*/
31079WDI_Status WDI_ProcessSetBatchScanReq
31080(
31081 WDI_ControlBlockType* pWDICtx,
31082 WDI_EventInfoType* pEventData
31083)
31084{
31085 WDI_SetBatchScanReqType *pWdiReq;
31086 WDI_Status wdiStatus;
31087 wpt_uint8* pSendBuffer = NULL;
31088 wpt_uint16 usDataOffset = 0;
31089 wpt_uint16 usSendSize = 0;
31090 tHalBatchScanSetParams *pHalReq;
31091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31092
31093 /*sanity check*/
31094 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
31095 {
31096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31097 "%s: Invalid parameters in set batch scan request", __func__);
31098 WDI_ASSERT(0);
31099 return WDI_STATUS_E_FAILURE;
31100 }
31101
31102
31103 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
31104
31105
31106 /*get message buffer*/
31107 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
31108 WDI_SET_BATCH_SCAN_REQ,
31109 sizeof(tHalBatchScanSetParams),
31110 &pSendBuffer, &usDataOffset, &usSendSize))||
31111 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
31112 {
31113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31114 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
31115 WDI_ASSERT(0);
31116 return WDI_STATUS_E_FAILURE;
31117 }
31118
31119 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
31120
31121 pHalReq->rtt = pWdiReq->rtt;
31122 pHalReq->rfBand = pWdiReq->rfBand;
31123 pHalReq->bestNetworks = pWdiReq->bestNetwork;
31124 pHalReq->scanInterval = pWdiReq->scanFrequency;
31125 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
31126
31127 /*send set batch scan request to fw*/
31128 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31129 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31130
31131 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31132 usSendSize, pWDICtx->pfncRspCB,
31133 pWDICtx->pReqStatusUserData,
31134 WDI_SET_BATCH_SCAN_RESP);
31135
31136 return wdiStatus;
31137}
31138
31139/**
31140 @brief WDI_SetBatchScanReq
31141 This API is called to set batch scan request in FW
31142
31143 @param pBatchScanReqParam : pointer to set batch scan re param
31144 usrData : Client context
31145 setBatchScanRspCb : set batch scan resp callback
31146 @see
31147 @return SUCCESS or FAIL
31148*/
31149WDI_Status WDI_SetBatchScanReq
31150(
31151 void *pBatchScanReqParam,
31152 void *usrData,
31153 WDI_SetBatchScanCb setBatchScanRspCb
31154)
31155{
31156 WDI_EventInfoType wdiEventData;
31157
31158 /*sanity check*/
31159 if (eWLAN_PAL_FALSE == gWDIInitialized)
31160 {
31161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31162 "WDI API call before module is initialized - Fail request");
31163
31164 return WDI_STATUS_E_NOT_ALLOWED;
31165 }
31166
31167 /* fill in event data and post to the main FSM */
31168 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
31169 wdiEventData.pEventData = pBatchScanReqParam;
31170 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
31171 wdiEventData.pCBfnc = setBatchScanRspCb;
31172 wdiEventData.pUserData = usrData;
31173
31174 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31175}
31176
31177/**
31178 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
31179
31180 @param None
31181
31182 @see
31183
31184 @return Status of the request
31185*/
31186WDI_Status
31187WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
31188{
31189 WDI_EventInfoType wdiEventData;
31190
31191 /*-------------------------------------------------------------------------
31192 Sanity Check
31193 ------------------------------------------------------------------------*/
31194 if (eWLAN_PAL_FALSE == gWDIInitialized)
31195 {
31196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31197 "WDI API call before module is initialized - Fail request!");
31198
31199 return WDI_STATUS_E_NOT_ALLOWED;
31200 }
31201
31202 /*-------------------------------------------------------------------------
31203 Fill in Event data and post to the Main FSM
31204 ------------------------------------------------------------------------*/
31205 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
31206 wdiEventData.pEventData = pWdiReq;
31207 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
31208 wdiEventData.pCBfnc = NULL;
31209 wdiEventData.pUserData = NULL;
31210
31211 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31212}
31213
31214/**
31215 @brief WDI_TriggerBatchScanResultInd
31216 This API is called to pull batch scan result from FW
31217
31218 @param pWdiReq : pointer to get batch scan ind param
31219 @see
31220 @return SUCCESS or FAIL
31221*/
31222WDI_Status WDI_TriggerBatchScanResultInd
31223(
31224 WDI_TriggerBatchScanResultIndType *pWdiReq
31225)
31226{
31227 WDI_EventInfoType wdiEventData;
31228 /*-------------------------------------------------------------------------
31229 Sanity Check
31230 ------------------------------------------------------------------------*/
31231 if (eWLAN_PAL_FALSE == gWDIInitialized)
31232 {
31233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31234 "WDI API call before module is initialized - Fail request!");
31235
31236 return WDI_STATUS_E_NOT_ALLOWED;
31237 }
31238
31239 /*-------------------------------------------------------------------------
31240 Fill in Event data and post to the Main FSM
31241 ------------------------------------------------------------------------*/
31242 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
31243 wdiEventData.pEventData = pWdiReq;
31244 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
31245 wdiEventData.pCBfnc = NULL;
31246 wdiEventData.pUserData = NULL;
31247
31248 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31249}
Rajeev79dbe4c2013-10-05 11:03:42 +053031250#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080031251
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080031252/**
31253 @brief Process Update Channel Rsp function (called when a response is
31254 being received over the bus from HAL)
31255
31256 @param pWDICtx: pointer to the WLAN DAL context
31257 pEventData: pointer to the event information structure
31258
31259 @see
31260 @return Result of the function call
31261*/
31262WDI_Status
31263WDI_ProcessUpdateChanRsp
31264(
31265 WDI_ControlBlockType* pWDICtx,
31266 WDI_EventInfoType* pEventData
31267)
31268{
31269 WDI_Status wdiStatus;
31270 eHalStatus halStatus;
31271 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
31272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31273
31274 /*-------------------------------------------------------------------------
31275 Sanity check
31276 -------------------------------------------------------------------------*/
31277 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31278 ( NULL == pEventData->pEventData))
31279 {
31280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31281 "%s: Invalid parameters", __func__);
31282 WDI_ASSERT(0);
31283 return WDI_STATUS_E_FAILURE;
31284 }
31285
31286 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
31287
31288 /*-------------------------------------------------------------------------
31289 Extract response and send it to UMAC
31290 -------------------------------------------------------------------------*/
31291 halStatus = *((eHalStatus*)pEventData->pEventData);
31292 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31293
31294 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
31295
31296 return WDI_STATUS_SUCCESS;
31297}/*WDI_ProcessUpdateChanRsp*/
31298
Leo Chang0b0e45a2013-12-15 15:18:55 -080031299#ifdef FEATURE_WLAN_CH_AVOID
31300/**
31301 @brief v -WDI_ProcessChAvoidInd
31302
31303
31304 @param pWDICtx : wdi context
31305 pEventData : indication data
31306 @see
31307 @return Result of the function call
31308*/
31309WDI_Status
31310WDI_ProcessChAvoidInd
31311(
31312 WDI_ControlBlockType* pWDICtx,
31313 WDI_EventInfoType* pEventData
31314)
31315{
31316 WDI_LowLevelIndType wdiInd;
31317 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31318 wpt_uint16 rangeLoop;
31319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31320
31321 /*-------------------------------------------------------------------------
31322 Sanity check
31323 -------------------------------------------------------------------------*/
31324 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31325 (NULL == pEventData->pEventData))
31326 {
31327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31328 "%s: Invalid parameters", __func__);
31329 WDI_ASSERT(0);
31330 return WDI_STATUS_E_FAILURE;
31331 }
31332
31333 /*-------------------------------------------------------------------------
31334 Extract indication and send it to UMAC
31335 -------------------------------------------------------------------------*/
31336 wpalMemoryCopy(&chAvoidIndicationParam,
31337 pEventData->pEventData,
31338 sizeof(tHalAvoidFreqRangeIndParams));
31339
Abhishek Singhe34eb552015-06-18 10:12:15 +053031340 /* Avoid Over flow */
31341 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31342 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31343
Leo Chang0b0e45a2013-12-15 15:18:55 -080031344 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31345 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31346 chAvoidIndicationParam.avoidCnt;
31347 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31348 (void *)chAvoidIndicationParam.avoidRange,
31349 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31350 sizeof(WDI_ChAvoidFreqType));
31351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31352 "%s: band count %d", __func__,
31353 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31354 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31355 {
31356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31357 "%s: srart freq %d, end freq %d", __func__,
31358 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31359 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31360 }
31361
31362 /*Notify UMAC*/
31363 if (pWDICtx->wdiLowLevelIndCB)
31364 {
31365 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31366 }
31367
31368 return WDI_STATUS_SUCCESS;
31369}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031370
Leo Chang0b0e45a2013-12-15 15:18:55 -080031371#endif /* FEATURE_WLAN_CH_AVOID */
31372
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031373/**
31374 @brief Process OBSS Start scan result indication
31375
31376 @param pWDICtx: pointer to the WLAN DAL context
31377 pEventData: pointer to the event information structure
31378
31379 @see
31380 @return Result of the function call
31381*/
31382WDI_Status
31383WDI_ProcessHT40OBSSScanInd
31384(
31385 WDI_ControlBlockType* pWDICtx,
31386 WDI_EventInfoType* pEventData
31387)
31388{
31389 wpt_uint8* pSendBuffer = NULL;
31390 wpt_uint16 usDataOffset = 0;
31391 wpt_uint16 usSendSize = 0;
31392 wpt_uint16 usLen = 0;
31393 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31394 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31395 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31396 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31397
31398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31399
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031401 "%s", __func__);
31402
31403 /*-------------------------------------------------------------------------
31404 Sanity check
31405 -------------------------------------------------------------------------*/
31406 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31407 {
31408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31409 "%s: Invalid parameters", __func__);
31410 WDI_ASSERT(0);
31411 return WDI_STATUS_E_FAILURE;
31412 }
31413 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31414
31415 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31416 /*-----------------------------------------------------------------------
31417 Get message buffer
31418 -----------------------------------------------------------------------*/
31419
31420 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31421 WDI_START_HT40_OBSS_SCAN_IND,
31422 sizeof(tHT40ObssScanIndType),
31423 &pSendBuffer, &usDataOffset, &usSendSize))||
31424 ( usSendSize < (usDataOffset + usLen )))
31425 {
31426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31427 "Unable to get send buffer in HT40 OBSS Start req %p ",
31428 pEventData);
31429 WDI_ASSERT(0);
31430 return WDI_STATUS_E_FAILURE;
31431 }
31432 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31433 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31434 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31435 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31436 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31437 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31438 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31439 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31440 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31441 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31442 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31443 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31444 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31445 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31446 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31447 pHT40ObssScanInd->OBSSScanActivityThreshold =
31448 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31449 pHT40ObssScanInd->selfStaIdx =
31450 pwdiHT40OBSSScanInd->selfStaIdx;
31451 pHT40ObssScanInd->bssIdx =
31452 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031453 pHT40ObssScanInd->currentOperatingClass =
31454 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031455 pHT40ObssScanInd->fortyMHZIntolerent =
31456 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31457 pHT40ObssScanInd->channelCount =
31458 pwdiHT40OBSSScanInd->channelCount;
31459
31460 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31461 WDI_ROAM_SCAN_MAX_CHANNELS);
31462 pHT40ObssScanInd->ieFieldLen =
31463 pwdiHT40OBSSScanInd->ieFieldLen;
31464
31465 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31466 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31467 pWDICtx->pReqStatusUserData = NULL;
31468 pWDICtx->pfncRspCB = NULL;
31469
31470 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31471 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31472
31473 /*-------------------------------------------------------------------------
31474 Send OBSS Start Indication to HAL
31475 -------------------------------------------------------------------------*/
31476 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31477 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31478
31479} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31480
31481
31482/**
31483 @brief wdi_HT40OBSSScanInd
31484 This API is called to start OBSS scan
31485
31486 @param pWdiReq : pointer to get ind param
31487 @see
31488 @return SUCCESS or FAIL
31489*/
31490WDI_Status WDI_HT40OBSSScanInd
31491(
31492 WDI_HT40ObssScanParamsType *pWdiReq
31493)
31494{
31495 WDI_EventInfoType wdiEventData;
31496
31497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31498 "%s", __func__);
31499 /*-------------------------------------------------------------------------
31500 Sanity Check
31501 ------------------------------------------------------------------------*/
31502 if (eWLAN_PAL_FALSE == gWDIInitialized)
31503 {
31504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31505 "WDI API call before module is initialized - Fail request!");
31506
31507 return WDI_STATUS_E_NOT_ALLOWED;
31508 }
31509
31510 /*-------------------------------------------------------------------------
31511 Fill in Event data and post to the Main FSM
31512 ------------------------------------------------------------------------*/
31513 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31514 wdiEventData.pEventData = pWdiReq;
31515 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31516 wdiEventData.pCBfnc = NULL;
31517 wdiEventData.pUserData = NULL;
31518
31519
31520 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31521}
31522
31523/**
31524 @brief Process OBSS Stop scan result
31525
31526 @param pWDICtx: pointer to the WLAN DAL context
31527 pEventData: pointer to the event information structure
31528
31529 @see
31530 @return Result of the function call
31531*/
31532WDI_Status
31533WDI_ProcessHT40OBSSStopScanInd
31534(
31535 WDI_ControlBlockType* pWDICtx,
31536 WDI_EventInfoType* pEventData
31537)
31538{
31539 wpt_uint8* pSendBuffer = NULL;
31540 wpt_uint16 usDataOffset = 0;
31541 wpt_uint16 usSendSize = 0;
31542 wpt_uint16 usLen = 0;
31543 wpt_uint8 *wdiBssIdx = 0;
31544 tANI_U8 *bssIdx = 0;
31545 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31546
31547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31548
31549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31550 "%s", __func__);
31551
31552 /*-------------------------------------------------------------------------
31553 Sanity check
31554 -------------------------------------------------------------------------*/
31555 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31556 {
31557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31558 "%s: Invalid parameters", __func__);
31559 WDI_ASSERT(0);
31560 return WDI_STATUS_E_FAILURE;
31561 }
31562 bssIdx = (wpt_uint8*)pEventData->pEventData;
31563 /*-----------------------------------------------------------------------
31564 Get message buffer
31565 -----------------------------------------------------------------------*/
31566
31567 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31568 WDI_STOP_HT40_OBSS_SCAN_IND,
31569 sizeof(tANI_U8),
31570 &pSendBuffer, &usDataOffset, &usSendSize))||
31571 ( usSendSize < (usDataOffset + usLen )))
31572 {
31573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31574 "Unable to get send buffer in HT40 OBSS Start req %p ",
31575 pEventData);
31576 WDI_ASSERT(0);
31577 return WDI_STATUS_E_FAILURE;
31578 }
31579
31580 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31581 bssIdx = wdiBssIdx;
31582
31583 pWDICtx->pReqStatusUserData = NULL;
31584 pWDICtx->pfncRspCB = NULL;
31585
31586 /*-------------------------------------------------------------------------
31587 Send DHCP Start Indication to HAL
31588 -------------------------------------------------------------------------*/
31589 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31590 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31591} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31592
31593/**
31594 @brief WDI_HT40OBSSStopScanInd
31595 This API is called to start OBSS scan
31596 @param pWdiReq : pointer to get ind param
31597 @see
31598 @return SUCCESS or FAIL
31599*/
31600WDI_Status WDI_HT40OBSSStopScanInd
31601(
31602 wpt_uint8 bssIdx
31603)
31604{
31605 WDI_EventInfoType wdiEventData;
31606
31607 /*-------------------------------------------------------------------------
31608 Sanity Check
31609 ------------------------------------------------------------------------*/
31610 if (eWLAN_PAL_FALSE == gWDIInitialized)
31611 {
31612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31613 "WDI API call before module is initialized - Fail request!");
31614
31615 return WDI_STATUS_E_NOT_ALLOWED;
31616 }
31617
31618 /*-------------------------------------------------------------------------
31619 Fill in Event data and post to the Main FSM
31620 ------------------------------------------------------------------------*/
31621 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31622 wdiEventData.pEventData = &bssIdx;
31623 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31624 wdiEventData.pCBfnc = NULL;
31625 wdiEventData.pUserData = NULL;
31626
31627 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31628}
31629
c_hpothu86041002014-04-14 19:06:51 +053031630WDI_Status
31631WDI_printRegInfo
31632(
31633 WDI_ControlBlockType* pWDICtx,
31634 WDI_EventInfoType* pEventData
31635)
31636{
31637 tHalRegDebugInfo *pRegTable;
31638 tHalRegDebugInfoParams *pRegParams;
31639 uint32 cnt=0;
31640
31641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31642 "%s: ", __func__);
31643 /*-------------------------------------------------------------------------
31644 Sanity check
31645 -------------------------------------------------------------------------*/
31646 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31647 ( NULL == pEventData->pEventData))
31648 {
31649 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31650 "%s: Invalid parameters", __func__);
31651 WDI_ASSERT(0);
31652 return WDI_STATUS_E_FAILURE;
31653 }
31654
31655 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31656
31657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31658 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31659 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31660
31661 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31662
31663 if (pRegParams->regCount <= 0)
31664 {
31665 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31666 "%s incorrect parameters passed", __func__);
31667 return WDI_STATUS_E_FAILURE;
31668 }
31669
31670 while(pRegParams->regCount--)
31671 {
31672 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31673 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31674 cnt++;
31675 }
31676
31677 return WDI_STATUS_SUCCESS;
31678}
c_hpothu92367912014-05-01 15:18:17 +053031679
31680/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031681 * FUNCTION: WDI_delBaInd
31682 * send the delBA to peer.
31683 */
31684
31685WDI_Status
31686WDI_delBaInd
31687(
31688 WDI_ControlBlockType* pWDICtx,
31689 WDI_EventInfoType* pEventData
31690
31691)
31692{
31693 tHalWlanDelBaIndMsg halDelBaInd;
31694 WDI_LowLevelIndType wdiInd;
31695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31696
31697 /*-------------------------------------------------------------------------
31698 Sanity check
31699 -------------------------------------------------------------------------*/
31700 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31701 ( NULL == pEventData->pEventData))
31702 {
31703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31704 "%s: Invalid parameters", __func__);
31705 WDI_ASSERT(0);
31706 return WDI_STATUS_E_FAILURE;
31707 }
31708
31709 /*-------------------------------------------------------------------------
31710 Extract indication and send it to UMAC
31711 -------------------------------------------------------------------------*/
31712
31713 /* Parameters need to be unpacked according to HAL struct*/
31714 wpalMemoryCopy( &halDelBaInd,
31715 pEventData->pEventData,
31716 sizeof(halDelBaInd));
31717
31718 /*Fill in the indication parameters*/
31719 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31720
31721 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31722 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31723 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31724
31725 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31726 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31727 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31728
31729 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31730 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31731 if ( pWDICtx->wdiLowLevelIndCB )
31732 {
31733 /*Notify UMAC*/
31734 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31735 }
31736
31737 return WDI_STATUS_SUCCESS;
31738
31739
31740}
31741
31742/*
c_hpothu92367912014-05-01 15:18:17 +053031743 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31744 * send the response to PE with beacon miss count
31745 * received from WDI.
31746 */
31747WDI_Status
31748WDI_ProcessGetBcnMissRateRsp
31749(
31750 WDI_ControlBlockType* pWDICtx,
31751 WDI_EventInfoType* pEventData
31752)
31753{
31754 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31755 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31756
31757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31758 "In %s",__func__);
31759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31760
31761 /*-------------------------------------------------------------------------
31762 Sanity check
31763 -------------------------------------------------------------------------*/
31764 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31765 ( NULL == pEventData->pEventData))
31766 {
31767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31768 "%s: Invalid parameters", __func__);
31769 WDI_ASSERT(0);
31770 return WDI_STATUS_E_FAILURE;
31771 }
31772
31773 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31774 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31775
31776 /*Notify UMAC*/
31777 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31778 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31779 return WDI_STATUS_SUCCESS;
31780}
31781
31782/*
31783 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31784 * Request to WDI to get missed beacon rate.
31785 */
31786WDI_Status
31787WDI_ProcessGetBcnMissRateReq
31788(
31789 WDI_ControlBlockType* pWDICtx,
31790 WDI_EventInfoType* pEventData
31791)
31792{
31793 wpt_uint8* pSendBuffer = NULL;
31794 wpt_uint16 usDataOffset = 0;
31795 wpt_uint16 usSendSize = 0;
31796 wpt_uint8 ucCurrentBSSSesIdx = 0;
31797 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031798 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31799 tHalBcnMissRateReqParams halBcnMissRateReq;
31800
31801/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31802
31803 /*-------------------------------------------------------------------------
31804 Sanity check
31805 -------------------------------------------------------------------------*/
31806 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31807 ( NULL == pEventData->pCBfnc ) )
31808 {
31809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31810 "%s: Invalid parameters", __func__);
31811 WDI_ASSERT(0);
31812 return WDI_STATUS_E_FAILURE;
31813 }
31814
31815 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31816
31817 wpalMutexAcquire(&pWDICtx->wptMutex);
31818
31819 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31820 pEventData->pEventData, &pBSSSes);
31821 if ( NULL == pBSSSes )
31822 {
31823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31824 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031825 MAC_ADDRESS_STR, __func__,
31826 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031827 wpalMutexRelease(&pWDICtx->wptMutex);
31828 return WDI_STATUS_E_NOT_ALLOWED;
31829 }
31830 wpalMutexRelease(&pWDICtx->wptMutex);
31831
31832 /*-----------------------------------------------------------------------
31833 Get message buffer
31834 -----------------------------------------------------------------------*/
31835 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31836 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31837 sizeof(tHalBcnMissRateReqParams),
31838 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31839 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31840 {
31841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31842 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31843 pEventData);
31844 WDI_ASSERT(0);
31845 return WDI_STATUS_E_FAILURE;
31846 }
31847
31848 pWDICtx->wdiReqStatusCB = NULL;
31849 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31850
31851 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31852
31853 wpalMemoryCopy( pSendBuffer+usDataOffset,
31854 &halBcnMissRateReq,
31855 sizeof(tHalBcnMissRateReqParams));
31856 /*-------------------------------------------------------------------------
31857 Send Get STA Request to HAL
31858 -------------------------------------------------------------------------*/
31859 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31860 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31861}
31862
31863/**
31864 @brief WDI_GetBcnMissRate
31865
31866 @param pUserData: user data will be passed back with the
31867 callback
31868 WDI_GetBcnMissRateCb: callback for passing back the response
31869 of the get stats operation received from the device
31870 bssid: bssid, to send bssIdx to FW
31871
31872 @return SUCCESS or FAIL
31873*/
31874WDI_Status WDI_GetBcnMissRate( void *pUserData,
31875 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31876 tANI_U8 *bssid )
31877{
31878 WDI_EventInfoType wdiEventData;
31879
31880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31881
31882 /*------------------------------------------------------------------------
31883 Sanity Check
31884 ------------------------------------------------------------------------*/
31885 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31886 {
31887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31888 "WDI API call before module is initialized - Fail request");
31889
31890 return WDI_STATUS_E_NOT_ALLOWED;
31891 }
31892
31893 /*------------------------------------------------------------------------
31894 Fill in Event data and post to the Main FSM
31895 ------------------------------------------------------------------------*/
31896 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31897 wdiEventData.pEventData = bssid;
31898 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31899 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31900 wdiEventData.pUserData = pUserData;
31901
31902 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31903}
Abhishek Singh85b74712014-10-08 11:38:19 +053031904
31905/*
31906 * FUNCTION: WDI_ProcessGetFwStatsRsp
31907 * send the response with FW stats asked.
31908 */
31909WDI_Status
31910 WDI_ProcessGetFwStatsRsp
31911(
31912 WDI_ControlBlockType* pWDICtx,
31913 WDI_EventInfoType* pEventData
31914)
31915{
31916 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31917 tpHalfwStatsRspParams pHalFwstatsRsp;
31918 WDI_FWStatsResults fwStats;
31919
31920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31921
31922 /*-------------------------------------------------------------------------
31923 Sanity check
31924 -------------------------------------------------------------------------*/
31925 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31926 ( NULL == pEventData->pEventData))
31927 {
31928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31929 "%s: Invalid parameters", __func__);
31930 WDI_ASSERT(0);
31931 return WDI_STATUS_E_FAILURE;
31932 }
31933 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31934 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31935
31936 if(pHalFwstatsRsp->length)
31937 {
31938 switch( pHalFwstatsRsp->type )
31939 {
31940 case FW_UBSP_STATS:
31941 {
31942 ubspFwStats *ubspStatsfromFw;
31943
31944 fwStats.type = pHalFwstatsRsp->type;
31945 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31946 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31947 ubspStatsfromFw->ubsp_enter_cnt;
31948 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31949 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31950 }
31951 break;
31952 default:
31953 {
31954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31955 "%s: No handling for stats type %d", __func__,
31956 pHalFwstatsRsp->type);
31957 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31958 NULL, pWDICtx->pRspCBUserData);
31959 return WDI_STATUS_E_FAILURE;
31960 }
31961 }
31962 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31963 }
31964 else
31965 {
31966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31967 "%s: Length = 0 for type %d return failure ", __func__,
31968 pHalFwstatsRsp->type);
31969 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31970 NULL, pWDICtx->pRspCBUserData);
31971 return WDI_STATUS_E_FAILURE;
31972 }
31973 return WDI_STATUS_SUCCESS;
31974}
31975
31976/*
31977 * FUNCTION: WDI_ProcessGetFwStatsReq
31978 * Request to WDI to get FW Stats.
31979 */
31980WDI_Status
31981 WDI_ProcessGetFwStatsReq
31982(
31983 WDI_ControlBlockType* pWDICtx,
31984 WDI_EventInfoType* pEventData
31985)
31986{
31987 wpt_uint8* pSendBuffer = NULL;
31988 wpt_uint16 usDataOffset = 0;
31989 wpt_uint16 usSendSize = 0;
31990 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31991 tHalfwStatsReqParams halFwStatsReq;
31992
31993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31994
31995 /*-------------------------------------------------------------------------
31996 Sanity check
31997 -------------------------------------------------------------------------*/
31998 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31999 ( NULL == pEventData->pCBfnc ) )
32000 {
32001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32002 "%s: Invalid parameters", __func__);
32003 WDI_ASSERT(0);
32004 return WDI_STATUS_E_FAILURE;
32005 }
32006
32007 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
32008
32009 /*-----------------------------------------------------------------------
32010 Get message buffer
32011 -----------------------------------------------------------------------*/
32012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32013 pWDICtx, WDI_GET_FW_STATS_REQ,
32014 sizeof(tHalfwStatsReqParams),
32015 &pSendBuffer, &usDataOffset, &usSendSize)) ||
32016 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
32017 {
32018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32019 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
32020 pEventData);
32021 WDI_ASSERT(0);
32022 return WDI_STATUS_E_FAILURE;
32023 }
32024
32025 pWDICtx->wdiReqStatusCB = NULL;
32026 pWDICtx->pReqStatusUserData = pEventData->pEventData;
32027 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
32028 wpalMemoryCopy( pSendBuffer+usDataOffset,
32029 &halFwStatsReq,
32030 sizeof(tHalfwStatsReqParams));
32031 /*-------------------------------------------------------------------------
32032 Send Get STA Request to HAL
32033 -------------------------------------------------------------------------*/
32034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
32035 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
32036}
32037
Sunil Duttbd736ed2014-05-26 21:19:41 +053032038#ifdef WLAN_FEATURE_LINK_LAYER_STATS
32039
32040/**
32041 @brief WDI_LLStatsSetReq
32042 This API is called to set link layer stats request in FW
32043
32044 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
32045 wdiLLStatsSetRspCb : set link layer stats resp callback
32046 usrData : Client context
32047 @see
32048 @return SUCCESS or FAIL
32049*/
32050WDI_Status
32051WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
32052 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
32053 void* pUserData)
32054{
32055 WDI_EventInfoType wdiEventData;
32056
32057 /*------------------------------------------------------------------------
32058 Sanity Check
32059 ------------------------------------------------------------------------*/
32060 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32061 {
32062 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32063 "WDI API call before module is initialized - Fail request");
32064
32065 return WDI_STATUS_E_NOT_ALLOWED;
32066 }
32067
32068 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
32069 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
32070 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
32071 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
32072 wdiEventData.pUserData = pUserData;
32073
32074 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32075}
32076
32077/**
32078 @brief WDI_ProcessLLStatsSetReq -
32079 Set Link Layer Stats request to FW
32080
32081 @param pWDICtx : wdi context
32082 pEventData : indication data
32083
32084 @see
32085 @return none
32086*/
32087WDI_Status
32088WDI_ProcessLLStatsSetReq
32089(
32090 WDI_ControlBlockType* pWDICtx,
32091 WDI_EventInfoType* pEventData
32092)
32093{
32094 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
32095 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
32096 wpt_uint8* pSendBuffer = NULL;
32097 wpt_uint16 usSendSize = 0;
32098 wpt_uint16 usDataOffset = 0;
32099 tHalMacLlSetStatsReqParams halLLStatsSetParams;
32100
32101 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32102 ( NULL == pEventData->pCBfnc ))
32103 {
32104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32105 "%s: Invalid parameters", __func__);
32106 WDI_ASSERT(0);
32107 return WDI_STATUS_E_FAILURE;
32108 }
32109
32110 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
32111 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
32112
32113 /*-----------------------------------------------------------------------
32114 Get message buffer
32115 ! TO DO : proper conversion into the HAL Message Request Format
32116 -----------------------------------------------------------------------*/
32117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32118 pWDICtx,
32119 WDI_LL_STATS_SET_REQ,
32120 sizeof(tHalMacLlSetStatsReqParams),
32121 &pSendBuffer, &usDataOffset,
32122 &usSendSize))||
32123 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
32124 {
32125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32126 "Unable to get send buffer in %s %p %p %p", __func__,
32127 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
32128 WDI_ASSERT(0);
32129 return WDI_STATUS_E_FAILURE;
32130 }
32131
32132
Dino Mycled3d50022014-07-07 12:58:25 +053032133 /* Need to fill in the self STA Index */
32134 if ( WDI_STATUS_SUCCESS !=
32135 WDI_STATableFindStaidByAddr(pWDICtx,
32136 pwdiLLStatsSetReqParams->macAddr,
32137 &halLLStatsSetParams.sta_id))
32138 {
32139 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32140 MAC_ADDRESS_STR
32141 ": This station does not exist in the WDI Station Table",
32142 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
32143
32144 wpalMemoryFree(pSendBuffer);
32145 return WDI_STATUS_E_FAILURE;
32146 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032147
32148 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032149 halLLStatsSetParams.mpdu_size_threshold =
32150 pwdiLLStatsSetReqParams->mpduSizeThreshold;
32151 halLLStatsSetParams.aggressive_statistics_gathering =
32152 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
32153
32154 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32155 " halLLStatsSetParams.req_id = %u",
32156 halLLStatsSetParams.req_id);
32157 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32158 " halLLStatsSetParams.sta_id = %u",
32159 halLLStatsSetParams.sta_id);
32160 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32161 " halLLStatsSetParams.mpdu_size_threshold = %u",
32162 halLLStatsSetParams.mpdu_size_threshold);
32163 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32164 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
32165 halLLStatsSetParams.aggressive_statistics_gathering);
32166
32167 wpalMemoryCopy(pSendBuffer+usDataOffset,
32168 &halLLStatsSetParams,
32169 sizeof(halLLStatsSetParams));
32170
32171 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32172
32173 /*-------------------------------------------------------------------------
32174 Send Clear Link Layer Stats Request to HAL
32175 -------------------------------------------------------------------------*/
32176 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32177 wdiLLStatsSetCb, pEventData->pUserData,
32178 WDI_LL_STATS_SET_RSP);
32179}
32180
32181/**
32182 @brief WDI_LLStatsGetReq
32183 This API is called to get link layer stats request in FW
32184
32185 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
32186 wdiLLStatsGetRspCb : get link layer stats resp callback
32187 usrData : Client context
32188 @see
32189 @return SUCCESS or FAIL
32190*/
32191WDI_Status
32192WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
32193 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
32194 void* pUserData)
32195{
32196 WDI_EventInfoType wdiEventData;
32197
32198 /*------------------------------------------------------------------------
32199 Sanity Check
32200 ------------------------------------------------------------------------*/
32201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32202 {
32203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32204 "WDI API call before module is initialized - Fail request");
32205
32206 return WDI_STATUS_E_NOT_ALLOWED;
32207 }
32208
32209 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
32210 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
32211 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
32212 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
32213 wdiEventData.pUserData = pUserData;
32214
32215 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32216}
32217
32218/**
32219 @brief WDI_ProcessLLStatsGetReq -
32220 Get Link Layer Stats request to FW
32221
32222 @param pWDICtx : wdi context
32223 pEventData : indication data
32224
32225 @see
32226 @return none
32227*/
32228WDI_Status
32229WDI_ProcessLLStatsGetReq
32230(
32231 WDI_ControlBlockType* pWDICtx,
32232 WDI_EventInfoType* pEventData
32233)
32234{
32235 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
32236 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
32237 wpt_uint8* pSendBuffer = NULL;
32238 wpt_uint16 usSendSize = 0;
32239 wpt_uint16 usDataOffset = 0;
32240 tHalMacLlGetStatsReqParams halLLStatsGetParams;
32241
32242 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32243 ( NULL == pEventData->pCBfnc ))
32244 {
32245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32246 "%s: Invalid parameters", __func__);
32247 WDI_ASSERT(0);
32248 return WDI_STATUS_E_FAILURE;
32249 }
32250
32251 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
32252 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
32253
32254 /*-----------------------------------------------------------------------
32255 Get message buffer
32256 ! TO DO : proper conversion into the HAL Message Request Format
32257 -----------------------------------------------------------------------*/
32258 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32259 pWDICtx,
32260 WDI_LL_STATS_GET_REQ,
32261 sizeof(tHalMacLlGetStatsReqParams),
32262 &pSendBuffer, &usDataOffset,
32263 &usSendSize))||
32264 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
32265 {
32266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32267 "Unable to get send buffer in %s %p %p %p", __func__,
32268 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
32269 WDI_ASSERT(0);
32270 return WDI_STATUS_E_FAILURE;
32271 }
Dino Mycled3d50022014-07-07 12:58:25 +053032272 /* Need to fill in the self STA Index */
32273 if ( WDI_STATUS_SUCCESS !=
32274 WDI_STATableFindStaidByAddr(pWDICtx,
32275 pwdiLLStatsGetReqParams->macAddr,
32276 &halLLStatsGetParams.sta_id))
32277 {
32278 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32279 MAC_ADDRESS_STR
32280 ": This station does not exist in the WDI Station Table",
32281 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
32282
32283 wpalMemoryFree(pSendBuffer);
32284 return WDI_STATUS_E_FAILURE;
32285 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032286
32287 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032288 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
32289
32290 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32291 " halLLStatsGetParams.req_id = %u",
32292 halLLStatsGetParams.req_id);
32293 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32294 " halLLStatsGetParams.staId = %u",
32295 halLLStatsGetParams.sta_id);
32296 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32297 " halLLStatsGetParams.Mask = %u",
32298 halLLStatsGetParams.param_id_mask);
32299
32300 wpalMemoryCopy(pSendBuffer+usDataOffset,
32301 &halLLStatsGetParams,
32302 sizeof(halLLStatsGetParams));
32303
32304 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32305
32306 /*-------------------------------------------------------------------------
32307 Send Clear Link Layer Stats Request to HAL
32308 -------------------------------------------------------------------------*/
32309 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32310 wdiLLStatsGetCb, pEventData->pUserData,
32311 WDI_LL_STATS_GET_RSP);
32312}
32313
32314/**
32315 @brief WDI_LLStatsClearReq
32316 This API is called to clear link layer stats request in FW
32317
32318 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32319 wdiLLStatsSetRspCb : clear link layer stats resp callback
32320 usrData : Client context
32321 @see
32322 @return SUCCESS or FAIL
32323*/
32324WDI_Status
32325WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32326 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32327 void* pUserData)
32328{
32329 WDI_EventInfoType wdiEventData;
32330
32331 /*------------------------------------------------------------------------
32332 Sanity Check
32333 ------------------------------------------------------------------------*/
32334 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32335 {
32336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32337 "WDI API call before module is initialized - Fail request");
32338
32339 return WDI_STATUS_E_NOT_ALLOWED;
32340 }
32341
32342 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32343 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32344 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32345 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32346 wdiEventData.pUserData = pUserData;
32347
32348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32349 "%s:%d Enter", __func__, __LINE__);
32350
32351 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32352}
32353
32354/**
32355 @brief WDI_ProcessLLStatsClearReq -
32356 Clear Link Layer Stats request to FW
32357
32358 @param pWDICtx : wdi context
32359 pEventData : indication data
32360
32361 @see
32362 @return none
32363*/
32364WDI_Status
32365WDI_ProcessLLStatsClearReq
32366(
32367 WDI_ControlBlockType* pWDICtx,
32368 WDI_EventInfoType* pEventData
32369)
32370{
32371 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32372 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32373 wpt_uint8* pSendBuffer = NULL;
32374 wpt_uint16 usSendSize = 0;
32375 wpt_uint16 usDataOffset = 0;
32376 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32377
32378 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32379 ( NULL == pEventData->pCBfnc ))
32380 {
32381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32382 "%s: Invalid parameters", __func__);
32383 WDI_ASSERT(0);
32384 return WDI_STATUS_E_FAILURE;
32385 }
32386
32387 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32388 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32389
32390 /*-----------------------------------------------------------------------
32391 Get message buffer
32392 ! TO DO : proper conversion into the HAL Message Request Format
32393 -----------------------------------------------------------------------*/
32394 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32395 pWDICtx,
32396 WDI_LL_STATS_CLEAR_REQ,
32397 sizeof(tHalMacLlClearStatsReqParams),
32398 &pSendBuffer, &usDataOffset,
32399 &usSendSize))||
32400 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32401 {
32402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32403 "Unable to get send buffer in %s %p %p %p", __func__,
32404 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32405 WDI_ASSERT(0);
32406 return WDI_STATUS_E_FAILURE;
32407 }
Dino Mycled3d50022014-07-07 12:58:25 +053032408 /* Need to fill in the self STA Index */
32409 if ( WDI_STATUS_SUCCESS !=
32410 WDI_STATableFindStaidByAddr(pWDICtx,
32411 pwdiLLStatsClearReqParams->macAddr,
32412 &halLLStatsClearParams.sta_id))
32413 {
32414 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32415 MAC_ADDRESS_STR
32416 ": This station does not exist in the WDI Station Table",
32417 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32418
32419 wpalMemoryFree(pSendBuffer);
32420 return WDI_STATUS_E_FAILURE;
32421 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032422
32423 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032424 halLLStatsClearParams.stats_clear_req_mask =
32425 pwdiLLStatsClearReqParams->statsClearReqMask;
32426 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32427
32428 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32429 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32430 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32431 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32432 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32433 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32434 halLLStatsClearParams.stats_clear_req_mask);
32435 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32436 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32437
32438 wpalMemoryCopy(pSendBuffer+usDataOffset,
32439 &halLLStatsClearParams,
32440 sizeof(halLLStatsClearParams));
32441
32442 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32443
32444 /*-------------------------------------------------------------------------
32445 Send Clear Link Layer Stats Request to HAL
32446 -------------------------------------------------------------------------*/
32447 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32448 wdiLLStatsClearCb, pEventData->pUserData,
32449 WDI_LL_STATS_CLEAR_RSP);
32450}
32451#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032452
Abhishek Singh85b74712014-10-08 11:38:19 +053032453WDI_Status WDI_FWStatsGetReq( void* pUserData,
32454 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32455 wpt_uint32 stats)
32456{
32457 WDI_EventInfoType wdiEventData;
32458
32459 /*------------------------------------------------------------------------
32460 Sanity Check
32461 ------------------------------------------------------------------------*/
32462 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32463 {
32464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32465 "WDI API call before module is initialized - Fail request");
32466 return WDI_STATUS_E_NOT_ALLOWED;
32467 }
32468 /*------------------------------------------------------------------------
32469 Fill in Event data and post to the Main FSM
32470 ------------------------------------------------------------------------*/
32471 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32472 wdiEventData.pEventData = (void *)&stats;
32473 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32474 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32475 wdiEventData.pUserData = pUserData;
32476
32477 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32478
32479}
32480
Katya Nigamf0511f62015-05-05 16:40:57 +053032481WDI_Status
32482WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032483 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032484 void* pUserData)
32485{
32486 WDI_EventInfoType wdiEventData;
32487
32488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32489 "%s", __func__);
32490
32491 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32492 {
32493 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32494 "WDI API call before module is initialized - Fail request");
32495
32496 return WDI_STATUS_E_NOT_ALLOWED;
32497 }
32498
32499 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32500 wdiEventData.pEventData = pwdiMonStartReqParams;
32501 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032502 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032503 wdiEventData.pUserData = pUserData;
32504
32505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32506}
32507
32508WDI_Status
32509WDI_ProcessMonStartReq
32510(
32511 WDI_ControlBlockType* pWDICtx,
32512 WDI_EventInfoType* pEventData
32513)
32514{
32515 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032516 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032517 wpt_uint8* pSendBuffer = NULL;
32518 wpt_uint16 usSendSize = 0;
32519 wpt_uint16 usDataOffset = 0;
32520 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32521
32522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32523 "%s", __func__);
32524
32525 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32526 ( NULL == pEventData->pCBfnc ))
32527 {
32528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32529 "%s: Invalid parameters", __func__);
32530 WDI_ASSERT(0);
32531 return WDI_STATUS_E_FAILURE;
32532 }
32533
32534 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032535 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032536
32537 /*-----------------------------------------------------------------------
32538 Get message buffer
32539 ! TO DO : proper conversion into the HAL Message Request Format
32540 -----------------------------------------------------------------------*/
32541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32542 pWDICtx,
32543 WDI_MON_START_REQ,
32544 sizeof(tHalEnableMonitorModeReqParams),
32545 &pSendBuffer, &usDataOffset,
32546 &usSendSize))||
32547 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32548 {
32549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32550 "Unable to get send buffer in %s %p %p %p", __func__,
32551 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32552 WDI_ASSERT(0);
32553 return WDI_STATUS_E_FAILURE;
32554 }
32555
32556 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32557 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32558 pwdiMonStartReqParams->ChannelBW);
32559 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32560 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32561 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32562 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32563 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32564 pwdiMonStartReqParams->mmFilters[0].macAddr,
32565 sizeof( wpt_macAddr ));
32566 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32567 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32568 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32569 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32570
32571 wpalMemoryCopy(pSendBuffer+usDataOffset,
32572 &halEnableMonitorModeParams,
32573 sizeof(halEnableMonitorModeParams));
32574
32575 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32576
32577 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32578 wdiMonStartCb, pEventData->pUserData,
32579 WDI_MON_START_RSP);
32580}
32581
32582WDI_Status
32583WDI_ProcessMonStartRsp
32584(
32585 WDI_ControlBlockType* pWDICtx,
32586 WDI_EventInfoType* pEventData
32587)
32588{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032589 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032590
32591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32592 "%s: Enter ", __func__);
32593 /*-------------------------------------------------------------------------
32594 Sanity check
32595 -------------------------------------------------------------------------*/
32596 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32597 ( NULL == pEventData->pEventData))
32598 {
32599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32600 "%s: Invalid parameters", __func__);
32601 WDI_ASSERT(0);
32602 return WDI_STATUS_E_FAILURE;
32603 }
32604
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032605 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032606
32607 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32608
32609 return WDI_STATUS_SUCCESS;
32610}
32611
32612WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032613WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032614 void* pUserData)
32615{
32616 WDI_EventInfoType wdiEventData;
32617
32618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32619 "%s", __func__);
32620
32621 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32622 {
32623 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32624 "WDI API call before module is initialized - Fail request");
32625
32626 return WDI_STATUS_E_NOT_ALLOWED;
32627 }
32628
32629 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32630 wdiEventData.pEventData = NULL;
32631 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032632 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032633 wdiEventData.pUserData = pUserData;
32634
32635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32636}
32637
32638WDI_Status
32639WDI_ProcessMonStopReq
32640(
32641 WDI_ControlBlockType* pWDICtx,
32642 WDI_EventInfoType* pEventData
32643)
32644{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032645 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032646 wpt_uint8* pSendBuffer = NULL;
32647 wpt_uint16 usSendSize = 0;
32648 wpt_uint16 usDataOffset = 0;
32649 wpt_uint8 resetConfiguration;
32650
32651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32652 "%s", __func__);
32653
32654 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32655 {
32656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32657 "%s: Invalid parameters", __func__);
32658 WDI_ASSERT(0);
32659 return WDI_STATUS_E_FAILURE;
32660 }
32661
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032662 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032663
32664 /*-----------------------------------------------------------------------
32665 Get message buffer
32666 ! TO DO : proper conversion into the HAL Message Request Format
32667 -----------------------------------------------------------------------*/
32668 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32669 pWDICtx,
32670 WDI_MON_STOP_REQ,
32671 sizeof(wpt_uint8),
32672 &pSendBuffer, &usDataOffset,
32673 &usSendSize))||
32674 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32675 {
32676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32677 "Unable to get send buffer in %s %p %p", __func__,
32678 pEventData, wdiMonStopCb);
32679 WDI_ASSERT(0);
32680 return WDI_STATUS_E_FAILURE;
32681 }
32682
32683 wpalMemoryCopy(pSendBuffer+usDataOffset,
32684 &resetConfiguration,
32685 sizeof(wpt_uint8));
32686
32687 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32688
32689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32690 wdiMonStopCb, pEventData->pUserData,
32691 WDI_MON_STOP_RSP);
32692}
32693
32694WDI_Status
32695WDI_ProcessMonStopRsp
32696(
32697 WDI_ControlBlockType* pWDICtx,
32698 WDI_EventInfoType* pEventData
32699)
32700{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032701 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032702
32703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32704 "%s: Enter ", __func__);
32705 /*-------------------------------------------------------------------------
32706 Sanity check
32707 -------------------------------------------------------------------------*/
32708 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32709 {
32710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32711 "%s: Invalid parameters", __func__);
32712 WDI_ASSERT(0);
32713 return WDI_STATUS_E_FAILURE;
32714 }
32715
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032716 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032717
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032718 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053032719
32720 return WDI_STATUS_SUCCESS;
32721}
32722
Dino Mycle41bdc942014-06-10 11:30:24 +053032723#ifdef WLAN_FEATURE_EXTSCAN
32724
32725/**
32726 @brief Process EXTSCAN BUffer full indication from FW
32727
32728 @param pWDICtx: pointer to the WLAN DAL context
32729 pEventData: pointer to the event information structure
32730
32731 @see
32732 @return Result of the function call
32733*/
32734WDI_Status
32735WDI_ProcessEXTScanProgressInd
32736(
32737 WDI_ControlBlockType* pWDICtx,
32738 WDI_EventInfoType* pEventData
32739)
32740{
32741 WDI_LowLevelIndType wdiInd;
32742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32743
32744 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32745 "%s: ", __func__);
32746
32747 /* sanity check */
32748 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32749 ( NULL == pEventData->pEventData))
32750 {
32751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32752 "%s: Invalid parameters", __func__);
32753 WDI_ASSERT(0);
32754 return WDI_STATUS_E_FAILURE;
32755 }
32756
32757 /* Fill in the indication parameters */
32758 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32759
32760 /* extract response and send it to UMAC */
32761 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32762
32763 /* Notify UMAC */
32764 if (pWDICtx->wdiLowLevelIndCB)
32765 {
32766 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32767 }
32768 else
32769 {
Dino Mycled3d50022014-07-07 12:58:25 +053032770 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032771 "%s: WDILowLevelIndCb is null", __func__);
32772 WDI_ASSERT(0);
32773 return WDI_STATUS_E_FAILURE;
32774 }
32775 return WDI_STATUS_SUCCESS;
32776
32777} /* End of WDI_ProcessEXTScanProgressInd */
32778
32779
32780/**
32781 @brief Process EXTScan Scan Available indication from FW
32782
32783 @param pWDICtx: pointer to the WLAN DAL context
32784 pEventData: pointer to the event information structure
32785
32786 @see
32787 @return Result of the function call
32788*/
32789WDI_Status
32790WDI_ProcessEXTScanScanAvailableInd
32791(
32792 WDI_ControlBlockType* pWDICtx,
32793 WDI_EventInfoType* pEventData
32794)
32795{
32796 WDI_LowLevelIndType wdiInd;
32797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32798
32799 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32800 "%s: ", __func__);
32801
32802 /* sanity check */
32803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32804 ( NULL == pEventData->pEventData))
32805 {
32806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32807 "%s: Invalid parameters", __func__);
32808 WDI_ASSERT(0);
32809 return WDI_STATUS_E_FAILURE;
32810 }
32811
32812
32813
32814 /* Fill in the indication parameters */
32815 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32816
32817 /* extract response and send it to UMAC */
32818 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32819
32820 /* Notify UMAC */
32821 if (pWDICtx->wdiLowLevelIndCB)
32822 {
32823 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32824 }
32825 else
32826 {
32827 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32828 "%s: WDILowLevelIndCb is null", __func__);
32829 WDI_ASSERT(0);
32830 return WDI_STATUS_E_FAILURE;
32831 }
32832 return WDI_STATUS_SUCCESS;
32833} /* End of WDI_ProcessEXTScanScanDoneInd */
32834
32835/**
32836 @brief Process EXTScan Result Indication indication from FW
32837
32838 @param pWDICtx: pointer to the WLAN DAL context
32839 pEventData: pointer to the event information structure
32840
32841 @see
32842 @return Result of the function call
32843*/
32844WDI_Status
32845WDI_ProcessEXTScanResultInd
32846(
32847 WDI_ControlBlockType* pWDICtx,
32848 WDI_EventInfoType* pEventData
32849)
32850{
32851 WDI_LowLevelIndType wdiInd;
32852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32853
32854 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32855 "%s: ", __func__);
32856
32857 /* sanity check */
32858 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32859 ( NULL == pEventData->pEventData))
32860 {
32861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32862 "%s: Invalid parameters", __func__);
32863 WDI_ASSERT(0);
32864 return WDI_STATUS_E_FAILURE;
32865 }
32866
32867 /* Fill in the indication parameters */
32868 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32869
32870 /* extract response and send it to UMAC */
32871 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32872
32873 /* Notify UMAC */
32874 if (pWDICtx->wdiLowLevelIndCB)
32875 {
32876 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32877 }
32878 else
32879 {
32880 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32881 "%s: WDILowLevelIndCb is null", __func__);
32882 WDI_ASSERT(0);
32883 return WDI_STATUS_E_FAILURE;
32884 }
32885 return WDI_STATUS_SUCCESS;
32886} /* End of WDI_ProcessEXTScanResultInd */
32887
32888/**
32889 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32890
32891 @param pWDICtx: pointer to the WLAN DAL context
32892 pEventData: pointer to the event information structure
32893
32894 @see
32895 @return Result of the function call
32896*/
32897WDI_Status
32898WDI_ProcessEXTScanBssidHotListResultInd
32899(
32900 WDI_ControlBlockType* pWDICtx,
32901 WDI_EventInfoType* pEventData
32902)
32903{
32904 WDI_LowLevelIndType wdiInd;
32905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32906
32907 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32908 "%s: ", __func__);
32909
32910 /* sanity check */
32911 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32912 ( NULL == pEventData->pEventData))
32913 {
32914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32915 "%s: Invalid parameters", __func__);
32916 WDI_ASSERT(0);
32917 return WDI_STATUS_E_FAILURE;
32918 }
32919
32920 /* Fill in the indication parameters */
32921 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32922
32923 /* extract response and send it to UMAC */
32924 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32925
32926 /* Notify UMAC */
32927 if (pWDICtx->wdiLowLevelIndCB)
32928 {
32929 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32930 }
32931 else
32932 {
32933 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32934 "%s: WDILowLevelIndCb is null", __func__);
32935 WDI_ASSERT(0);
32936 return WDI_STATUS_E_FAILURE;
32937 }
32938 return WDI_STATUS_SUCCESS;
32939} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32940
32941/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053032942 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
32943
32944 @param pWDICtx: pointer to the WLAN DAL context
32945 pEventData: pointer to the event information structure
32946
32947 @see
32948 @return Result of the function call
32949*/
32950WDI_Status
32951WDI_ProcessEXTScanSsidHotListResultInd
32952(
32953 WDI_ControlBlockType* pWDICtx,
32954 WDI_EventInfoType* pEventData
32955)
32956{
32957 WDI_LowLevelIndType wdiInd;
32958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32959
32960 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32961 "%s: ", __func__);
32962
32963 /* sanity check */
32964 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32965 ( NULL == pEventData->pEventData))
32966 {
32967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32968 "%s: Invalid parameters", __func__);
32969 WDI_ASSERT(0);
32970 return WDI_STATUS_E_FAILURE;
32971 }
32972
32973 /* Fill in the indication parameters */
32974 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
32975
32976 /* extract response and send it to UMAC */
32977 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32978
32979 /* Notify UMAC */
32980 if (pWDICtx->wdiLowLevelIndCB)
32981 {
32982 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32983 }
32984 else
32985 {
32986 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32987 "%s: WDILowLevelIndCb is null", __func__);
32988 WDI_ASSERT(0);
32989 return WDI_STATUS_E_FAILURE;
32990 }
32991 return WDI_STATUS_SUCCESS;
32992} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
32993
32994
32995/**
Dino Mycle41bdc942014-06-10 11:30:24 +053032996 @brief WDI_EXTScanGetCapabilitiesReq
32997
32998 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32999 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
33000 of the Req operation received from the device
33001 pUserData: user data will be passed back with the callback
33002
33003 @return SUCCESS or FAIL
33004*/
33005WDI_Status
33006WDI_EXTScanGetCapabilitiesReq(
33007 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
33008 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
33009 void* pUserData)
33010{
33011 WDI_EventInfoType wdiEventData;
33012
33013 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33014 "%s: %d ",__func__, __LINE__);
33015 /*------------------------------------------------------------------------
33016 Sanity Check
33017 ------------------------------------------------------------------------*/
33018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33019 {
33020 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33021 "WDI API call before module is initialized - Fail request");
33022
33023 return WDI_STATUS_E_NOT_ALLOWED;
33024 }
33025
33026 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
33027 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
33028 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
33029 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
33030 wdiEventData.pUserData = pUserData;
33031
33032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33033}
33034
33035/**
33036 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
33037 Extended Scan Get Capability request to FW
33038
33039 @param pWDICtx : wdi context
33040 pEventData : indication data
33041
33042 @see
33043 @return none
33044*/
33045WDI_Status
33046WDI_ProcessEXTScanGetCapabilitiesReq
33047(
33048 WDI_ControlBlockType* pWDICtx,
33049 WDI_EventInfoType* pEventData
33050)
33051{
33052 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
33053 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33054 wpt_uint8* pSendBuffer = NULL;
33055 wpt_uint16 usSendSize = 0;
33056 wpt_uint16 usDataOffset = 0;
33057 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
33058
33059 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33060 "%s: %d Enter",__func__, __LINE__);
33061
33062 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33063 ( NULL == pEventData->pCBfnc ))
33064 {
33065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33066 "%s: Invalid parameters", __func__);
33067 WDI_ASSERT(0);
33068 return WDI_STATUS_E_FAILURE;
33069 }
33070
33071 pwdiEXTScanGetCapabilitiesReqParams =
33072 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
33073 wdiEXTScanGetCapabilitiesRspCb =
33074 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
33075
33076 /*-----------------------------------------------------------------------
33077 Get message buffer
33078 ! TO DO : proper conversion into the HAL Message Request Format
33079 -----------------------------------------------------------------------*/
33080 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33081 pWDICtx,
33082 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
33083 sizeof(halEXTScanGetCapReqParams),
33084 &pSendBuffer, &usDataOffset,
33085 &usSendSize))||
33086 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
33087 {
33088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33089 "Unable to get send buffer in %s %p %p %p", __func__,
33090 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
33091 wdiEXTScanGetCapabilitiesRspCb);
33092 WDI_ASSERT(0);
33093 return WDI_STATUS_E_FAILURE;
33094 }
33095
33096 halEXTScanGetCapReqParams.requestId =
33097 pwdiEXTScanGetCapabilitiesReqParams->requestId;
33098 halEXTScanGetCapReqParams.sessionId =
33099 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
33100
33101 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33102 " requestId %u "
33103 " sessionId %u ",
33104 halEXTScanGetCapReqParams.requestId,
33105 halEXTScanGetCapReqParams.sessionId);
33106
33107 wpalMemoryCopy(pSendBuffer+usDataOffset,
33108 &halEXTScanGetCapReqParams,
33109 sizeof(halEXTScanGetCapReqParams));
33110
33111 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33112
33113
33114 /*-------------------------------------------------------------------------
33115 Send EXTScan Stop Request to HAL
33116 -------------------------------------------------------------------------*/
33117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33118 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
33119 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
33120}
33121
33122/**
33123 @brief WDI_EXTScanGetCachedResultsReq
33124
33125 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
33126 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
33127 of the Req operation received from the device
33128 pUserData: user data will be passed back with the callback
33129
33130 @return SUCCESS or FAIL
33131*/
33132
33133WDI_Status
33134WDI_EXTScanGetCachedResultsReq(
33135 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
33136 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
33137 void* pUserData)
33138{
33139 WDI_EventInfoType wdiEventData;
33140
33141 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33142 "%s: %d Enter",__func__, __LINE__);
33143 /*------------------------------------------------------------------------
33144 Sanity Check
33145 ------------------------------------------------------------------------*/
33146 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33147 {
33148 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33149 "WDI API call before module is initialized - Fail request");
33150
33151 return WDI_STATUS_E_NOT_ALLOWED;
33152 }
33153
33154 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
33155 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
33156 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
33157 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
33158 wdiEventData.pUserData = pUserData;
33159
33160 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33161}
33162
33163/**
33164 @brief WDI_ProcessEXTScanGetCachedResultsReq -
33165 Extended Scan Get Cached Result request to FW
33166
33167 @param pWDICtx : wdi context
33168 pEventData : indication data
33169
33170 @see
33171 @return none
33172*/
33173WDI_Status
33174WDI_ProcessEXTScanGetCachedResultsReq
33175(
33176 WDI_ControlBlockType* pWDICtx,
33177 WDI_EventInfoType* pEventData
33178)
33179{
33180 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
33181 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
33182 wpt_uint8* pSendBuffer = NULL;
33183 wpt_uint16 usSendSize = 0;
33184 wpt_uint16 usDataOffset = 0;
33185 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
33186
33187 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33188 "%s: %d Enter",__func__, __LINE__);
33189
33190 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33191 ( NULL == pEventData->pCBfnc ))
33192 {
33193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33194 "%s: Invalid parameters", __func__);
33195 WDI_ASSERT(0);
33196 return WDI_STATUS_E_FAILURE;
33197 }
33198
33199 pwdiEXTScanGetCachedResultsReqParams =
33200 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
33201 wdiEXTScanGetCachedResultsCb =
33202 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
33203
33204 /*-----------------------------------------------------------------------
33205 Get message buffer
33206 ! TO DO : proper conversion into the HAL Message Request Format
33207 -----------------------------------------------------------------------*/
33208 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33209 pWDICtx,
33210 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
33211 sizeof(tHalExtScanGetScanReq),
33212 &pSendBuffer, &usDataOffset,
33213 &usSendSize))||
33214 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
33215 {
33216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33217 "Unable to get send buffer in %s %p %p %p", __func__,
33218 pEventData, pwdiEXTScanGetCachedResultsReqParams,
33219 wdiEXTScanGetCachedResultsCb);
33220 WDI_ASSERT(0);
33221 return WDI_STATUS_E_FAILURE;
33222 }
33223
33224 halEXTScanGetScanReqParams.requestId =
33225 pwdiEXTScanGetCachedResultsReqParams->requestId;
33226 halEXTScanGetScanReqParams.sessionId =
33227 pwdiEXTScanGetCachedResultsReqParams->sessionId;
33228 halEXTScanGetScanReqParams.flush =
33229 pwdiEXTScanGetCachedResultsReqParams->flush;
33230
33231 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33232 " requestId %u "
33233 " sessionId %u "
33234 " flush %u ",
33235 halEXTScanGetScanReqParams.requestId,
33236 halEXTScanGetScanReqParams.sessionId,
33237 halEXTScanGetScanReqParams.flush);
33238
33239 wpalMemoryCopy(pSendBuffer+usDataOffset,
33240 &halEXTScanGetScanReqParams,
33241 sizeof(halEXTScanGetScanReqParams));
33242
33243 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33244
33245
33246 /*-------------------------------------------------------------------------
33247 Send EXTScan Stop Request to HAL
33248 -------------------------------------------------------------------------*/
33249 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33250 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
33251 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
33252}
33253
33254/**
33255 @brief WDI_EXTScanStopReq
33256
33257 @param WDI_EXTScanStopReqParams: Req parameter for the FW
33258 WDI_EXTScanStopRspCb: callback for passing back the response
33259 of the Req operation received from the device
33260 pUserData: user data will be passed back with the callback
33261
33262 @return SUCCESS or FAIL
33263*/
33264WDI_Status
33265WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
33266 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
33267 void* pUserData)
33268{
33269 WDI_EventInfoType wdiEventData;
33270
33271 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33272 "%s: %d ",__func__, __LINE__);
33273 /*------------------------------------------------------------------------
33274 Sanity Check
33275 ------------------------------------------------------------------------*/
33276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33277 {
33278 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33279 "WDI API call before module is initialized - Fail request");
33280
33281 return WDI_STATUS_E_NOT_ALLOWED;
33282 }
33283
33284 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
33285 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
33286 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
33287 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
33288 wdiEventData.pUserData = pUserData;
33289
33290 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33291}
33292
33293/**
33294 @brief WDI_ProcessEXTScanStopReq -
33295 Extended Scan Stop request to FW
33296
33297 @param pWDICtx : wdi context
33298 pEventData : indication data
33299
33300 @see
33301 @return none
33302*/
33303WDI_Status
33304WDI_ProcessEXTScanStopReq
33305(
33306 WDI_ControlBlockType* pWDICtx,
33307 WDI_EventInfoType* pEventData
33308)
33309{
33310 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33311 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33312 wpt_uint8* pSendBuffer = NULL;
33313 wpt_uint16 usSendSize = 0;
33314 wpt_uint16 usDataOffset = 0;
33315 tHalExtScanStopReq halEXTScanStopReqParams;
33316
33317 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33318 "%s: %d ",__func__, __LINE__);
33319
33320 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33321 ( NULL == pEventData->pCBfnc ))
33322 {
33323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33324 "%s: Invalid parameters", __func__);
33325 WDI_ASSERT(0);
33326 return WDI_STATUS_E_FAILURE;
33327 }
33328
33329 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33330 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33331
33332 /*-----------------------------------------------------------------------
33333 Get message buffer
33334 ! TO DO : proper conversion into the HAL Message Request Format
33335 -----------------------------------------------------------------------*/
33336 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33337 pWDICtx,
33338 WDI_EXTSCAN_STOP_REQ,
33339 sizeof(tHalExtScanStopReq),
33340 &pSendBuffer, &usDataOffset,
33341 &usSendSize))||
33342 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33343 {
33344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33345 "Unable to get send buffer in %s %p %p %p", __func__,
33346 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33347 WDI_ASSERT(0);
33348 return WDI_STATUS_E_FAILURE;
33349 }
33350
33351 halEXTScanStopReqParams.requestId =
33352 pwdiEXTScanStopReqParams->requestId;
33353 halEXTScanStopReqParams.sessionId =
33354 pwdiEXTScanStopReqParams->sessionId;
33355
33356 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33357 " halEXTScanStopReqParams.requestId %u "
33358 " halEXTScanStopReqParams.sessionId %u ",
33359 halEXTScanStopReqParams.requestId,
33360 halEXTScanStopReqParams.sessionId);
33361
33362 wpalMemoryCopy(pSendBuffer+usDataOffset,
33363 &halEXTScanStopReqParams,
33364 sizeof(halEXTScanStopReqParams));
33365
33366 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33367
33368
33369 /*-------------------------------------------------------------------------
33370 Send EXTScan Stop Request to HAL
33371 -------------------------------------------------------------------------*/
33372 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33373 wdiEXTScanStopCb, pEventData->pUserData,
33374 WDI_EXTSCAN_STOP_RSP);
33375}
33376
33377/**
33378 @brief WDI_EXTScanStartReq
33379
33380 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33381 WDI_EXTScanStartRspCb: callback for passing back the response
33382 of the Req operation received from the device
33383 pUserData: user data will be passed back with the callback
33384
33385 @return SUCCESS or FAIL
33386*/
33387WDI_Status
33388WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33389 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33390 void* pUserData)
33391{
33392 WDI_EventInfoType wdiEventData;
33393
33394 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33395 "%s: %d Enter",__func__, __LINE__);
33396 /*------------------------------------------------------------------------
33397 Sanity Check
33398 ------------------------------------------------------------------------*/
33399 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33400 {
33401 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33402 "WDI API call before module is initialized - Fail request");
33403
33404 return WDI_STATUS_E_NOT_ALLOWED;
33405 }
33406
33407 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33408 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33409 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33410 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33411 wdiEventData.pUserData = pUserData;
33412
33413 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33414}
33415
33416/**
33417 @brief WDI_ProcessEXTScanStartReq -
33418 Extended Scan Start Request to FW
33419
33420 @param pWDICtx : wdi context
33421 pEventData : indication data
33422
33423 @see
33424 @return none
33425*/
33426WDI_Status
33427WDI_ProcessEXTScanStartReq
33428(
33429 WDI_ControlBlockType* pWDICtx,
33430 WDI_EventInfoType* pEventData
33431)
33432{
33433 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33434 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33435 wpt_uint8* pSendBuffer = NULL;
33436 wpt_uint16 usSendSize = 0;
33437 wpt_uint16 usDataOffset = 0;
33438 tpHalExtScanStartReq pHalExtScanStartReqParams;
33439 int i = 0;
33440 int j = 0;
33441
33442 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33443 "%s: %d Enter",__func__, __LINE__);
33444
33445 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33446 ( NULL == pEventData->pCBfnc ))
33447 {
33448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33449 "%s: Invalid parameters", __func__);
33450 WDI_ASSERT(0);
33451 return WDI_STATUS_E_FAILURE;
33452 }
33453
33454 pwdiEXTScanStartReqParams =
33455 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33456 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33457
33458 /*-----------------------------------------------------------------------
33459 Get message buffer
33460 ! TO DO : proper conversion into the HAL Message Request Format
33461 -----------------------------------------------------------------------*/
33462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33463 pWDICtx,
33464 WDI_EXTSCAN_START_REQ,
33465 sizeof(tHalExtScanStartReq),
33466 &pSendBuffer, &usDataOffset,
33467 &usSendSize))||
33468 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33469 {
33470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33471 "Unable to get send buffer in %s %p %p %p", __func__,
33472 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33473 WDI_ASSERT(0);
33474 return WDI_STATUS_E_FAILURE;
33475 }
33476
33477 pHalExtScanStartReqParams =
33478 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33479
33480 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33481 pHalExtScanStartReqParams->maxApPerScan =
33482 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033483 pHalExtScanStartReqParams->reportThresholdPercent =
33484 pwdiEXTScanStartReqParams->reportThresholdPercent;
33485 pHalExtScanStartReqParams->reportThresholdNumScans =
33486 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053033487 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33488 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33489 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033490 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053033491
33492 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33493 {
33494 pHalExtScanStartReqParams->bucketData[i].bucketId =
33495 pwdiEXTScanStartReqParams->buckets[i].bucket;
33496 pHalExtScanStartReqParams->bucketData[i].channelBand =
33497 pwdiEXTScanStartReqParams->buckets[i].band;
33498 pHalExtScanStartReqParams->bucketData[i].period =
33499 pwdiEXTScanStartReqParams->buckets[i].period;
33500 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33501 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033502 pHalExtScanStartReqParams->bucketData[i].max_period =
33503 pwdiEXTScanStartReqParams->buckets[i].max_period;
33504 pHalExtScanStartReqParams->bucketData[i].exponent =
33505 pwdiEXTScanStartReqParams->buckets[i].exponent;
33506 pHalExtScanStartReqParams->bucketData[i].step_count =
33507 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053033508 pHalExtScanStartReqParams->bucketData[i].numChannels =
33509 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33510
33511 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33512 {
33513 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33514 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33515 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33516 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33517 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33518 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33519 }
33520
33521 }
33522
33523
33524 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033525 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
33526 "reportThresholdNumScans %u requestId %u"
33527 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033528 pHalExtScanStartReqParams->basePeriod,
33529 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033530 pHalExtScanStartReqParams->reportThresholdPercent,
33531 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053033532 pHalExtScanStartReqParams->requestId,
33533 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033534 pHalExtScanStartReqParams->numBuckets,
33535 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053033536
33537 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33538 {
33539 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33540 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033541 " reportEvents %u numChannels %u "
33542 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053033543 pHalExtScanStartReqParams->bucketData[i].bucketId,
33544 pHalExtScanStartReqParams->bucketData[i].channelBand,
33545 pHalExtScanStartReqParams->bucketData[i].period,
33546 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033547 pHalExtScanStartReqParams->bucketData[i].numChannels,
33548 pHalExtScanStartReqParams->bucketData[i].max_period,
33549 pHalExtScanStartReqParams->bucketData[i].exponent,
33550 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053033551
33552 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33553 {
33554 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33555 "%d) channel %u dwellTimeMs %u passive %u ",j,
33556 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33557 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33558 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33559 }
33560
33561 }
33562
Dino Mycle41bdc942014-06-10 11:30:24 +053033563 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33564
33565 /*-------------------------------------------------------------------------
33566 Send EXTSCAN Start Request to HAL
33567 -------------------------------------------------------------------------*/
33568 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33569 wdiEXTScanStartCb, pEventData->pUserData,
33570 WDI_EXTSCAN_START_RSP);
33571}
33572
33573/**
33574 @brief WDI_EXTScanSetBSSIDHotlistReq
33575
33576 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33577 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33578 of the Req operation received from the device
33579 pUserData: user data will be passed back with the callback
33580
33581 @return SUCCESS or FAIL
33582*/
33583WDI_Status
33584WDI_EXTScanSetBSSIDHotlistReq(
33585 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33586 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33587 void* pUserData)
33588{
33589 WDI_EventInfoType wdiEventData;
33590
33591 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33592 "%s: %d Enter ",__func__, __LINE__);
33593 /*------------------------------------------------------------------------
33594 Sanity Check
33595 ------------------------------------------------------------------------*/
33596 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33597 {
33598 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33599 "WDI API call before module is initialized - Fail request");
33600
33601 return WDI_STATUS_E_NOT_ALLOWED;
33602 }
33603
33604 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33605 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33606 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33607 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33608 wdiEventData.pUserData = pUserData;
33609
33610 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33611}
33612
33613/**
33614 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33615 Extended Scan Set BSSSID Hotlist Request to FW
33616
33617 @param pWDICtx : wdi context
33618 pEventData : indication data
33619
33620 @see
33621 @return none
33622*/
33623WDI_Status
33624WDI_ProcessEXTScanSetBSSIDHotlistReq
33625(
33626 WDI_ControlBlockType* pWDICtx,
33627 WDI_EventInfoType* pEventData
33628)
33629{
33630 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33631 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33632 wpt_uint8* pSendBuffer = NULL;
33633 wpt_uint16 usSendSize = 0;
33634 wpt_uint16 usDataOffset = 0;
33635 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33636 int i;
33637
33638 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33639 "%s: %d Enter",__func__, __LINE__);
33640
33641 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33642 ( NULL == pEventData->pCBfnc ))
33643 {
33644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33645 "%s: Invalid parameters", __func__);
33646 WDI_ASSERT(0);
33647 return WDI_STATUS_E_FAILURE;
33648 }
33649
33650 pwdiEXTScanSetBSSIDHotlistReqParams =
33651 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33652 wdiEXTScanSetBSSIDHotlistRspCb =
33653 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33654
33655 /*-----------------------------------------------------------------------
33656 Get message buffer
33657 ! TO DO : proper conversion into the HAL Message Request Format
33658 -----------------------------------------------------------------------*/
33659 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33660 pWDICtx,
33661 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33662 sizeof(tHalBssidHotlistSetReq),
33663 &pSendBuffer, &usDataOffset,
33664 &usSendSize))||
33665 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33666 {
33667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33668 "Unable to get send buffer in %s %p %p %p", __func__,
33669 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33670 wdiEXTScanSetBSSIDHotlistRspCb);
33671 WDI_ASSERT(0);
33672 return WDI_STATUS_E_FAILURE;
33673 }
33674 pHalBssidHotlistSetReqParams =
33675 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33676
33677 pHalBssidHotlistSetReqParams->requestId =
33678 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33679
33680 pHalBssidHotlistSetReqParams->sessionId =
33681 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33682
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033683 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
33684 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
33685
33686 pHalBssidHotlistSetReqParams->numBssid =
33687 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053033688
33689 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33690
33691 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33692 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33693 WDI_MAC_ADDR_LEN);
33694
33695 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33696 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33697
33698 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33699 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33700
Dino Mycle41bdc942014-06-10 11:30:24 +053033701 }
33702
33703 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033704 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033705 pHalBssidHotlistSetReqParams->requestId,
33706 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033707 pHalBssidHotlistSetReqParams->numBssid,
33708 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053033709
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033710 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053033711
33712 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033713 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053033714 __func__, __LINE__, i,
33715 pHalBssidHotlistSetReqParams->ap[i].bssid,
33716 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033717 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053033718
33719 }
33720
33721 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33722
33723
33724 /*-------------------------------------------------------------------------
33725 Send EXTScan Stop Request to HAL
33726 -------------------------------------------------------------------------*/
33727 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33728 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33729 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33730}
33731
33732/**
33733 @brief WDI_EXTScanResetBSSIDHotlistReq
33734
33735 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33736 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33737 of the Req operation received from the device
33738 pUserData: user data will be passed back with the callback
33739
33740 @return SUCCESS or FAIL
33741*/
33742WDI_Status
33743WDI_EXTScanResetBSSIDHotlistReq(
33744 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33745 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33746 void* pUserData)
33747{
33748 WDI_EventInfoType wdiEventData;
33749
33750 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33751 "%s: %d",__func__, __LINE__);
33752 /*------------------------------------------------------------------------
33753 Sanity Check
33754 ------------------------------------------------------------------------*/
33755 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33756 {
33757 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33758 "WDI API call before module is initialized - Fail request");
33759
33760 return WDI_STATUS_E_NOT_ALLOWED;
33761 }
33762
33763 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33764 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33765 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33766 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33767 wdiEventData.pUserData = pUserData;
33768
33769 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33770}
33771
33772/**
33773 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33774 Extended Scan reset BSSID hotlist Request to FW
33775
33776 @param pWDICtx : wdi context
33777 pEventData : indication data
33778
33779 @see
33780 @return none
33781*/
33782WDI_Status
33783WDI_ProcessEXTScanResetBSSIDHotlistReq
33784(
33785 WDI_ControlBlockType* pWDICtx,
33786 WDI_EventInfoType* pEventData
33787)
33788{
33789 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33790 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33791 wpt_uint8* pSendBuffer = NULL;
33792 wpt_uint16 usSendSize = 0;
33793 wpt_uint16 usDataOffset = 0;
33794 tpHalHotlistResetReq pHalHotlistResetReqParams;
33795
33796 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33797 "%s: %d",__func__, __LINE__);
33798
33799 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33800 ( NULL == pEventData->pCBfnc ))
33801 {
33802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33803 "%s: Invalid parameters", __func__);
33804 WDI_ASSERT(0);
33805 return WDI_STATUS_E_FAILURE;
33806 }
33807
33808 pwdiEXTScanResetBSSIDHotlistReqParams =
33809 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33810 wdiEXTScanResetBSSIDHotlistRspCb =
33811 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33812
33813 /*-----------------------------------------------------------------------
33814 Get message buffer
33815 ! TO DO : proper conversion into the HAL Message Request Format
33816 -----------------------------------------------------------------------*/
33817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33818 pWDICtx,
33819 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33820 sizeof(tHalHotlistResetReq),
33821 &pSendBuffer, &usDataOffset,
33822 &usSendSize))||
33823 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33824 {
33825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33826 "Unable to get send buffer in %s %p %p %p", __func__,
33827 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33828 wdiEXTScanResetBSSIDHotlistRspCb);
33829 WDI_ASSERT(0);
33830 return WDI_STATUS_E_FAILURE;
33831 }
33832 pHalHotlistResetReqParams =
33833 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33834
33835 pHalHotlistResetReqParams->requestId =
33836 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33837
33838 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33839
33840 /*-------------------------------------------------------------------------
33841 Send EXTScan Stop Request to HAL
33842 -------------------------------------------------------------------------*/
33843 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33844 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33845 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33846}
33847
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053033848
33849/**
33850 @brief WDI_EXTScanSetSSIDHotlistReq
33851
33852 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
33853 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
33854 of the Req operation received from the device
33855 pUserData: user data will be passed back with the callback
33856
33857 @return SUCCESS or FAIL
33858*/
33859WDI_Status
33860WDI_EXTScanSetSSIDHotlistReq(
33861 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
33862 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
33863 void* pUserData)
33864{
33865 WDI_EventInfoType wdiEventData;
33866
33867 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33868 "%s: %d Enter ",__func__, __LINE__);
33869 /*------------------------------------------------------------------------
33870 Sanity Check
33871 ------------------------------------------------------------------------*/
33872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33873 {
33874 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33875 "WDI API call before module is initialized - Fail request");
33876
33877 return WDI_STATUS_E_NOT_ALLOWED;
33878 }
33879
33880 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
33881 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
33882 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
33883 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
33884 wdiEventData.pUserData = pUserData;
33885
33886 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33887}
33888
33889/**
33890 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
33891 Extended Scan Set SSSID Hotlist Request to FW
33892
33893 @param pWDICtx : wdi context
33894 pEventData : indication data
33895
33896 @see
33897 @return none
33898*/
33899WDI_Status
33900WDI_ProcessEXTScanSetSSIDHotlistReq
33901(
33902 WDI_ControlBlockType* pWDICtx,
33903 WDI_EventInfoType* pEventData
33904)
33905{
33906 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
33907 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
33908 wpt_uint8* pSendBuffer = NULL;
33909 wpt_uint16 usSendSize = 0;
33910 wpt_uint16 usDataOffset = 0;
33911 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
33912 int i;
33913
33914 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33915 "%s: %d Enter",__func__, __LINE__);
33916
33917 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33918 ( NULL == pEventData->pCBfnc ))
33919 {
33920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33921 "%s: Invalid parameters", __func__);
33922 WDI_ASSERT(0);
33923 return WDI_STATUS_E_FAILURE;
33924 }
33925
33926 pwdiEXTScanSetSSIDHotlistReqParams =
33927 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
33928 wdiEXTScanSetSSIDHotlistRspCb =
33929 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
33930
33931 /*-----------------------------------------------------------------------
33932 Get message buffer
33933 ! TO DO : proper conversion into the HAL Message Request Format
33934 -----------------------------------------------------------------------*/
33935 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33936 pWDICtx,
33937 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
33938 sizeof(tHalSsidHotlistSetReq),
33939 &pSendBuffer, &usDataOffset,
33940 &usSendSize))||
33941 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
33942 {
33943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33944 "Unable to get send buffer in %s %p %p %p", __func__,
33945 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
33946 wdiEXTScanSetSSIDHotlistRspCb);
33947 WDI_ASSERT(0);
33948 return WDI_STATUS_E_FAILURE;
33949 }
33950 pHalSsidHotlistSetReqParams =
33951 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
33952
33953 pHalSsidHotlistSetReqParams->requestId =
33954 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
33955
33956 pHalSsidHotlistSetReqParams->sessionId =
33957 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
33958
33959 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
33960 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
33961
33962 pHalSsidHotlistSetReqParams->numSsid =
33963 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
33964
33965 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33966
33967 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
33968 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
33969 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
33970 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
33971
33972 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
33973 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
33974
33975 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
33976 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
33977
33978 pHalSsidHotlistSetReqParams->ssid[i].band =
33979 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
33980 }
33981
33982 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33983 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
33984 pHalSsidHotlistSetReqParams->requestId,
33985 pHalSsidHotlistSetReqParams->sessionId,
33986 pHalSsidHotlistSetReqParams->numSsid,
33987 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
33988
33989 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
33990
33991 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33992 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
33993 __func__, __LINE__, i,
33994 pHalSsidHotlistSetReqParams->ssid[i].ssid,
33995 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
33996 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
33997 pHalSsidHotlistSetReqParams->ssid[i].band);
33998 }
33999
34000 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34001
34002
34003 /*-------------------------------------------------------------------------
34004 Send EXTScan Stop Request to HAL
34005 -------------------------------------------------------------------------*/
34006 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34007 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
34008 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
34009}
34010
34011/**
34012 @brief WDI_EXTScanResetSSIDHotlistReq
34013
34014 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
34015 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
34016 of the Req operation received from the device
34017 pUserData: user data will be passed back with the callback
34018
34019 @return SUCCESS or FAIL
34020*/
34021WDI_Status
34022WDI_EXTScanResetSSIDHotlistReq(
34023 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
34024 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
34025 void* pUserData)
34026{
34027 WDI_EventInfoType wdiEventData;
34028
34029 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34030 "%s: %d",__func__, __LINE__);
34031 /*------------------------------------------------------------------------
34032 Sanity Check
34033 ------------------------------------------------------------------------*/
34034 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34035 {
34036 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34037 "WDI API call before module is initialized - Fail request");
34038
34039 return WDI_STATUS_E_NOT_ALLOWED;
34040 }
34041
34042 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
34043 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
34044 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
34045 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
34046 wdiEventData.pUserData = pUserData;
34047
34048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34049}
34050
34051/**
34052 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
34053 Extended Scan reset SSID hotlist Request to FW
34054
34055 @param pWDICtx : wdi context
34056 pEventData : indication data
34057
34058 @see
34059 @return none
34060*/
34061WDI_Status
34062WDI_ProcessEXTScanResetSSIDHotlistReq
34063(
34064 WDI_ControlBlockType* pWDICtx,
34065 WDI_EventInfoType* pEventData
34066)
34067{
34068 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
34069 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34070 wpt_uint8* pSendBuffer = NULL;
34071 wpt_uint16 usSendSize = 0;
34072 wpt_uint16 usDataOffset = 0;
34073 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
34074
34075 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34076 "%s: %d",__func__, __LINE__);
34077
34078 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34079 ( NULL == pEventData->pCBfnc ))
34080 {
34081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34082 "%s: Invalid parameters", __func__);
34083 WDI_ASSERT(0);
34084 return WDI_STATUS_E_FAILURE;
34085 }
34086
34087 pwdiEXTScanResetSSIDHotlistReqParams =
34088 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
34089 wdiEXTScanResetSSIDHotlistRspCb =
34090 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
34091
34092 /*-----------------------------------------------------------------------
34093 Get message buffer
34094 ! TO DO : proper conversion into the HAL Message Request Format
34095 -----------------------------------------------------------------------*/
34096 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34097 pWDICtx,
34098 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
34099 sizeof(tHalSsidHotlistResetReq),
34100 &pSendBuffer, &usDataOffset,
34101 &usSendSize))||
34102 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
34103 {
34104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34105 "Unable to get send buffer in %s %p %p %p", __func__,
34106 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
34107 wdiEXTScanResetSSIDHotlistRspCb);
34108 WDI_ASSERT(0);
34109 return WDI_STATUS_E_FAILURE;
34110 }
34111 pHalSsidHotlistResetReqParams =
34112 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
34113
34114 pHalSsidHotlistResetReqParams->requestId =
34115 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
34116
34117 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34118
34119 /*-------------------------------------------------------------------------
34120 Send RESET_HOTLIST_SSID Request to HAL
34121 -------------------------------------------------------------------------*/
34122 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34123 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
34124 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
34125}
34126
34127
Dino Mycle41bdc942014-06-10 11:30:24 +053034128/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053034129 @brief WDI_HighPriorityDataInfoInd
34130
34131 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
34132
34133 @return SUCCESS or FAIL
34134*/
34135WDI_Status
34136WDI_HighPriorityDataInfoInd
34137(
34138 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
34139)
34140{
34141 WDI_EventInfoType wdiEventData;
34142
34143 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34144 "%s: %d",__func__, __LINE__);
34145 /*------------------------------------------------------------------------
34146 Sanity Check
34147 ------------------------------------------------------------------------*/
34148 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34149 {
34150 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34151 "WDI API call before module is initialized - Fail request");
34152
34153 return WDI_STATUS_E_NOT_ALLOWED;
34154 }
34155
34156 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
34157 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
34158 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
34159 wdiEventData.pCBfnc = NULL;
34160 wdiEventData.pUserData = NULL;
34161
34162 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34163}
34164
34165/**
34166 @brief WDI_ProcessHighPriorityDataInfoInd -
34167 Send WFD indication to FW
34168
34169 @param pWDICtx : wdi context
34170 pEventData : indication data
34171
34172 @see
34173 @return none
34174*/
34175WDI_Status
34176WDI_ProcessHighPriorityDataInfoInd
34177(
34178 WDI_ControlBlockType* pWDICtx,
34179 WDI_EventInfoType* pEventData
34180)
34181{
34182 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
34183 wpt_uint8* pSendBuffer = NULL;
34184 wpt_uint16 usSendSize = 0;
34185 wpt_uint16 usDataOffset = 0;
34186 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
34187 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34188
34189 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34190 "%s: %d",__func__, __LINE__);
34191
34192 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34193 ( NULL == pEventData->pEventData))
34194 {
34195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34196 "%s: Invalid parameters", __func__);
34197 WDI_ASSERT(0);
34198 return WDI_STATUS_E_FAILURE;
34199 }
34200
34201 pHighPriorityDataInfoIndParams =
34202 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
34203
34204 /*-----------------------------------------------------------------------
34205 Get message buffer
34206 -----------------------------------------------------------------------*/
34207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34208 pWDICtx,
34209 WDI_HIGH_PRIORITY_DATA_INFO_IND,
34210 sizeof(tHalHighPriorityDataInfoInd),
34211 &pSendBuffer, &usDataOffset,
34212 &usSendSize))||
34213 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
34214 {
34215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34216 "Unable to get send buffer in %s %p %p", __func__,
34217 pEventData, pHighPriorityDataInfoIndParams);
34218 WDI_ASSERT(0);
34219 return WDI_STATUS_E_FAILURE;
34220 }
34221 pHalHighPriorityDataInfoIndParams =
34222 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
34223
34224 pHalHighPriorityDataInfoIndParams->pause =
34225 pHighPriorityDataInfoIndParams->pause;
34226
34227 pWDICtx->pReqStatusUserData = NULL;
34228 pWDICtx->pfncRspCB = NULL;
34229
34230 /*-------------------------------------------------------------------------
34231 Send HIGH_PRIORITY_DATA_INFO Request to HAL
34232 -------------------------------------------------------------------------*/
34233 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34234 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34235}
34236
34237/**
Dino Mycle41bdc942014-06-10 11:30:24 +053034238 @brief Process Extended Scan Start Rsp function (called when a response
34239 is being received over the bus from HAL)
34240
34241 @param pWDICtx: pointer to the WLAN DAL context
34242 pEventData: pointer to the event information structure
34243
34244 @see
34245 @return Result of the function call
34246*/
34247WDI_Status
34248WDI_ProcessEXTScanStartRsp
34249(
34250 WDI_ControlBlockType* pWDICtx,
34251 WDI_EventInfoType* pEventData
34252)
34253{
34254 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
34255
34256 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34257 "%s: %d",__func__, __LINE__);
34258 /*-------------------------------------------------------------------------
34259 Sanity check
34260 -------------------------------------------------------------------------*/
34261 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34262 ( NULL == pEventData->pEventData))
34263 {
34264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34265 "%s: Invalid parameters", __func__);
34266 WDI_ASSERT(0);
34267 return WDI_STATUS_E_FAILURE;
34268 }
34269
34270 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34271 if ( NULL == wdiEXTScanStartRspCb)
34272 {
34273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34274 "%s: Callback function Invalid", __func__);
34275 WDI_ASSERT(0);
34276 return WDI_STATUS_E_FAILURE;
34277 }
34278
34279 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
34280
34281 return WDI_STATUS_SUCCESS;
34282}
34283
34284
34285/**
34286 @brief Process Extended Scan Stop Rsp function (called when a response
34287 is being received over the bus from HAL)
34288
34289 @param pWDICtx: pointer to the WLAN DAL context
34290 pEventData: pointer to the event information structure
34291
34292 @see
34293 @return Result of the function call
34294*/
34295WDI_Status
34296WDI_ProcessEXTScanStopRsp
34297(
34298 WDI_ControlBlockType* pWDICtx,
34299 WDI_EventInfoType* pEventData
34300)
34301{
34302 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
34303
34304 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34305 "%s: %d",__func__, __LINE__);
34306
34307
34308 /*-------------------------------------------------------------------------
34309 Sanity check
34310 -------------------------------------------------------------------------*/
34311 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34312 ( NULL == pEventData->pEventData))
34313 {
34314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34315 "%s: Invalid parameters", __func__);
34316 WDI_ASSERT(0);
34317 return WDI_STATUS_E_FAILURE;
34318 }
34319
34320 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34321 if ( NULL == wdiEXTScanStopRspCb)
34322 {
34323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34324 "%s: Callback function Invalid", __func__);
34325 WDI_ASSERT(0);
34326 return WDI_STATUS_E_FAILURE;
34327 }
34328
34329 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34330
34331 return WDI_STATUS_SUCCESS;
34332}
34333
34334/**
34335 @brief Process Extended Scan Get Cached Rsp function (called when a response
34336 is being received over the bus from HAL)
34337
34338 @param pWDICtx: pointer to the WLAN DAL context
34339 pEventData: pointer to the event information structure
34340
34341 @see
34342 @return Result of the function call
34343*/
34344WDI_Status
34345WDI_ProcessEXTScanGetCachedResultsRsp
34346(
34347 WDI_ControlBlockType* pWDICtx,
34348 WDI_EventInfoType* pEventData
34349)
34350{
34351 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
34352
34353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34354 "%s: %d Enter",__func__, __LINE__);
34355
34356
34357 /*-------------------------------------------------------------------------
34358 Sanity check
34359 -------------------------------------------------------------------------*/
34360 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34361 ( NULL == pEventData->pEventData))
34362 {
34363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34364 "%s: Invalid parameters", __func__);
34365 WDI_ASSERT(0);
34366 return WDI_STATUS_E_FAILURE;
34367 }
34368
34369 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34370 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
34371 {
34372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34373 "%s: Callback function Invalid", __func__);
34374 WDI_ASSERT(0);
34375 return WDI_STATUS_E_FAILURE;
34376 }
34377
34378 wdiEXTScanGetCachedResultsRspCb(
34379 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34380
34381 return WDI_STATUS_SUCCESS;
34382}
34383
34384/**
34385 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
34386 is being received over the bus from HAL)
34387
34388 @param pWDICtx: pointer to the WLAN DAL context
34389 pEventData: pointer to the event information structure
34390
34391 @see
34392 @return Result of the function call
34393*/
34394WDI_Status
34395WDI_ProcessEXTScanGetCapabilitiesRsp
34396(
34397 WDI_ControlBlockType* pWDICtx,
34398 WDI_EventInfoType* pEventData
34399)
34400{
34401 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
34402
34403 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34404 "%s: %d ",__func__, __LINE__);
34405
34406
34407 /*-------------------------------------------------------------------------
34408 Sanity check
34409 -------------------------------------------------------------------------*/
34410 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34411 ( NULL == pEventData->pEventData))
34412 {
34413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34414 "%s: Invalid parameters", __func__);
34415 WDI_ASSERT(0);
34416 return WDI_STATUS_E_FAILURE;
34417 }
34418
34419 wdiEXTScanGetCapabilitiesRspCb =
34420 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
34421 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34422 {
34423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34424 "%s: Callback function Invalid", __func__);
34425 WDI_ASSERT(0);
34426 return WDI_STATUS_E_FAILURE;
34427 }
34428
34429 wdiEXTScanGetCapabilitiesRspCb(
34430 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34431
34432 return WDI_STATUS_SUCCESS;
34433}
34434
34435/**
34436 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34437 response is being received over the bus from HAL)
34438
34439 @param pWDICtx: pointer to the WLAN DAL context
34440 pEventData: pointer to the event information structure
34441
34442 @see
34443 @return Result of the function call
34444*/
34445WDI_Status
34446WDI_ProcessEXTScanSetHotlistBSSIDRsp
34447(
34448 WDI_ControlBlockType* pWDICtx,
34449 WDI_EventInfoType* pEventData
34450)
34451{
34452 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34453
34454 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34455 "%s: %d ",__func__, __LINE__);
34456
34457
34458 /*-------------------------------------------------------------------------
34459 Sanity check
34460 -------------------------------------------------------------------------*/
34461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34462 ( NULL == pEventData->pEventData))
34463 {
34464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34465 "%s: Invalid parameters", __func__);
34466 WDI_ASSERT(0);
34467 return WDI_STATUS_E_FAILURE;
34468 }
34469
34470 wdiEXTScanSetBSSIDHotlistRspCb =
34471 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34472 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34473 {
34474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34475 "%s: Callback function Invalid", __func__);
34476 WDI_ASSERT(0);
34477 return WDI_STATUS_E_FAILURE;
34478 }
34479
34480 wdiEXTScanSetBSSIDHotlistRspCb(
34481 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34482
34483 return WDI_STATUS_SUCCESS;
34484}
34485
34486/**
34487 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34488 when a response is being received over the bus from HAL)
34489
34490 @param pWDICtx: pointer to the WLAN DAL context
34491 pEventData: pointer to the event information structure
34492
34493 @see
34494 @return Result of the function call
34495*/
34496WDI_Status
34497WDI_ProcessEXTScanResetHotlistBSSIDRsp
34498(
34499 WDI_ControlBlockType* pWDICtx,
34500 WDI_EventInfoType* pEventData
34501)
34502{
34503 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34504
34505 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34506 "%s: %d ",__func__, __LINE__);
34507
34508
34509 /*-------------------------------------------------------------------------
34510 Sanity check
34511 -------------------------------------------------------------------------*/
34512 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34513 ( NULL == pEventData->pEventData))
34514 {
34515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34516 "%s: Invalid parameters", __func__);
34517 WDI_ASSERT(0);
34518 return WDI_STATUS_E_FAILURE;
34519 }
34520
34521 wdiEXTScanResetBSSIDHotlistRspCb =
34522 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34523 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34524 {
34525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34526 "%s: Callback function Invalid", __func__);
34527 WDI_ASSERT(0);
34528 return WDI_STATUS_E_FAILURE;
34529 }
34530
34531 wdiEXTScanResetBSSIDHotlistRspCb(
34532 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34533
34534 return WDI_STATUS_SUCCESS;
34535}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034536
34537/**
34538 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
34539 response is being received over the bus from HAL)
34540
34541 @param pWDICtx: pointer to the WLAN DAL context
34542 pEventData: pointer to the event information structure
34543
34544 @see
34545 @return Result of the function call
34546*/
34547WDI_Status
34548WDI_ProcessEXTScanSetHotlistSSIDRsp
34549(
34550 WDI_ControlBlockType* pWDICtx,
34551 WDI_EventInfoType* pEventData
34552)
34553{
34554 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
34555
34556 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34557 "%s: %d ",__func__, __LINE__);
34558
34559
34560 /*-------------------------------------------------------------------------
34561 Sanity check
34562 -------------------------------------------------------------------------*/
34563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34564 ( NULL == pEventData->pEventData))
34565 {
34566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34567 "%s: Invalid parameters", __func__);
34568 WDI_ASSERT(0);
34569 return WDI_STATUS_E_FAILURE;
34570 }
34571
34572 wdiEXTScanSetSSIDHotlistRspCb =
34573 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34574 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
34575 {
34576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34577 "%s: Callback function Invalid", __func__);
34578 WDI_ASSERT(0);
34579 return WDI_STATUS_E_FAILURE;
34580 }
34581
34582 wdiEXTScanSetSSIDHotlistRspCb(
34583 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34584
34585 return WDI_STATUS_SUCCESS;
34586}
34587
34588
34589/**
34590 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34591 when a response is being received over the bus from HAL)
34592
34593 @param pWDICtx: pointer to the WLAN DAL context
34594 pEventData: pointer to the event information structure
34595
34596 @see
34597 @return Result of the function call
34598*/
34599WDI_Status
34600WDI_ProcessEXTScanResetHotlistSSIDRsp
34601(
34602 WDI_ControlBlockType* pWDICtx,
34603 WDI_EventInfoType* pEventData
34604)
34605{
34606 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34607
34608 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34609 "%s: %d ",__func__, __LINE__);
34610
34611
34612 /*-------------------------------------------------------------------------
34613 Sanity check
34614 -------------------------------------------------------------------------*/
34615 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34616 ( NULL == pEventData->pEventData))
34617 {
34618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34619 "%s: Invalid parameters", __func__);
34620 WDI_ASSERT(0);
34621 return WDI_STATUS_E_FAILURE;
34622 }
34623
34624 wdiEXTScanResetSSIDHotlistRspCb =
34625 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34626 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
34627 {
34628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34629 "%s: Callback function Invalid", __func__);
34630 WDI_ASSERT(0);
34631 return WDI_STATUS_E_FAILURE;
34632 }
34633
34634 wdiEXTScanResetSSIDHotlistRspCb(
34635 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34636
34637 return WDI_STATUS_SUCCESS;
34638}
Dino Mycle41bdc942014-06-10 11:30:24 +053034639#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034640
34641/**
34642 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34643
34644 @param None
34645
34646 @see
34647
34648 @return Status of the request
34649*/
34650WDI_Status
34651WDI_SetSpoofMacAddrReq
34652(
34653 WDI_SpoofMacAddrInfoType* pWdiReq,
34654 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34655 void* pUserData)
34656{
34657 WDI_EventInfoType wdiEventData;
34658
34659 /*-------------------------------------------------------------------------
34660 Sanity Check
34661 ------------------------------------------------------------------------*/
34662 if (eWLAN_PAL_FALSE == gWDIInitialized)
34663 {
34664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34665 "WDI API call before module is initialized - Fail request!");
34666
34667 return WDI_STATUS_E_NOT_ALLOWED;
34668 }
34669
34670 /*-------------------------------------------------------------------------
34671 Fill in Event data and post to the Main FSM
34672 ------------------------------------------------------------------------*/
34673 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34674 wdiEventData.pEventData = pWdiReq;
34675 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34676 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34677 wdiEventData.pUserData = pUserData;
34678
34679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34680}
34681
34682/**
34683 @brief Process SpoofMacAddr Request
34684
34685 @param pWDICtx: pointer to the WLAN DAL context
34686 pEventData: pointer to the event information structure
34687
34688 @see
34689 @return Result of the function call
34690*/
34691WDI_Status
34692WDI_ProcessSpoofMacAddrReq
34693(
34694 WDI_ControlBlockType* pWDICtx,
34695 WDI_EventInfoType* pEventData
34696)
34697{
34698 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34699 wpt_uint8* pSendBuffer = NULL;
34700 wpt_uint16 usDataOffset = 0;
34701 wpt_uint16 usSendSize = 0;
34702 WDI_Status wdiStatus;
34703 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34704 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34705
34706
34707 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34708 "%s: %d Enter",__func__, __LINE__);
34709
34710 /*-------------------------------------------------------------------------
34711 Sanity check
34712 -------------------------------------------------------------------------*/
34713 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34714 ( NULL == pEventData->pEventData))
34715 {
34716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34717 "%s: Invalid parameters", __func__);
34718 WDI_ASSERT(0);
34719 return WDI_STATUS_E_FAILURE;
34720 }
34721 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34722
34723 /*-----------------------------------------------------------------------
34724 Get message buffer
34725 -----------------------------------------------------------------------*/
34726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34727 WDI_SPOOF_MAC_ADDR_REQ,
34728 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34729 &pSendBuffer, &usDataOffset, &usSendSize))||
34730 (usSendSize < (usDataOffset +
34731 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34732 {
34733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34734 "Unable to get send buffer in Process Spoof Mac Addr Req");
34735 WDI_ASSERT(0);
34736 return WDI_STATUS_E_FAILURE;
34737 }
34738
34739 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34740 wdiSpoofMacAddr->macAddr,
34741 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34742
34743 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34744
34745 wpalMemoryCopy( pSendBuffer+usDataOffset,
34746 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34747 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34748
34749 /*-------------------------------------------------------------------------
34750 Send Suspend Request to HAL
34751 -------------------------------------------------------------------------*/
34752 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34753 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34754
34755 return wdiStatus;
34756}
34757
34758/**
34759 @brief Process Spoof Mac Address Rsp function
34760 (called when a response is being received over the bus from HAL)
34761
34762 @param pWDICtx: pointer to the WLAN DAL context
34763 pEventData: pointer to the event information structure
34764
34765 @see
34766 @return Result of the function call
34767*/
34768WDI_Status
34769WDI_ProcessSpoofMacAddrRsp
34770(
34771 WDI_ControlBlockType* pWDICtx,
34772 WDI_EventInfoType* pEventData
34773)
34774{
34775 tMacSpoofedScanResp halRsp;
34776 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34777 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34778
34779 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34780 "%s: %d Enter",__func__, __LINE__);
34781
34782 /*-------------------------------------------------------------------------
34783 Sanity check
34784 -------------------------------------------------------------------------*/
34785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34786 ( NULL == pEventData->pEventData))
34787 {
34788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34789 "%s: Invalid parameters", __func__);
34790 WDI_ASSERT(0);
34791 return WDI_STATUS_E_FAILURE;
34792 }
34793 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34794
34795 /*-------------------------------------------------------------------------
34796 Extract response and send it to UMAC
34797 -------------------------------------------------------------------------*/
34798 wpalMemoryCopy( &halRsp,
34799 pEventData->pEventData, sizeof(halRsp));
34800
34801 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34802
34803 /*Notify UMAC*/
34804 wdiSpoofMacAddrRspCb(
34805 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34806
34807 return WDI_STATUS_SUCCESS;
34808}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034809
34810/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034811 @brief Process Get Frame Log Rsp function
34812 (called when a response is being received over the bus from HAL)
34813
34814 @param pWDICtx: pointer to the WLAN DAL context
34815 pEventData: pointer to the event information structure
34816
34817 @see
34818 @return Result of the function call
34819*/
34820WDI_Status
34821WDI_ProcessGetFrameLogRsp
34822(
34823 WDI_ControlBlockType* pWDICtx,
34824 WDI_EventInfoType* pEventData
34825)
34826{
34827 tGetFrameLogResp halRsp;
34828 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34829 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34830
34831 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34832 "%s: %d Enter",__func__, __LINE__);
34833
34834 /*-------------------------------------------------------------------------
34835 Sanity check
34836 -------------------------------------------------------------------------*/
34837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34838 ( NULL == pEventData->pEventData))
34839 {
34840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34841 "%s: Invalid parameters", __func__);
34842 WDI_ASSERT(0);
34843 return WDI_STATUS_E_FAILURE;
34844 }
34845
34846 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34847
34848 /*-------------------------------------------------------------------------
34849 Extract response and send it to UMAC
34850 -------------------------------------------------------------------------*/
34851 wpalMemoryCopy( &halRsp,
34852 pEventData->pEventData, sizeof(halRsp));
34853
34854 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34855
34856 /*Notify UMAC*/
34857 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34858
34859 return WDI_STATUS_SUCCESS;
34860}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053034861
34862/**
34863 @brief Process RssiMonitorStartReq Request
34864
34865 @param pWDICtx: pointer to the WLAN DAL context
34866 pEventData: pointer to the event information structure
34867
34868 @see
34869 @return Result of the function call
34870*/
34871WDI_Status
34872WDI_ProcessRssiMonitorStartReq
34873(
34874 WDI_ControlBlockType* pWDICtx,
34875 WDI_EventInfoType* pEventData
34876)
34877{
34878 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
34879 wpt_uint8* pSendBuffer = NULL;
34880 wpt_uint16 usDataOffset = 0;
34881 wpt_uint16 usSendSize = 0;
34882 WDI_Status wdiStatus;
34883 tHalStartRssimonitoringReq halStartRssiMonitorReq;
34884 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
34885
34886
34887 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34888 "%s: %d Enter",__func__, __LINE__);
34889
34890 /*-------------------------------------------------------------------------
34891 Sanity check
34892 ------------------------------------------------------------------------*/
34893 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34894 ( NULL == pEventData->pEventData))
34895 {
34896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34897 "%s: Invalid parameters", __func__);
34898 WDI_ASSERT(0);
34899 return WDI_STATUS_E_FAILURE;
34900 }
34901
34902 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34903
34904 /*-----------------------------------------------------------------------
34905 Get message buffer
34906 -----------------------------------------------------------------------*/
34907 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34908 WDI_START_RSSI_MONITOR_REQ,
34909 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
34910 &pSendBuffer, &usDataOffset, &usSendSize))||
34911 (usSendSize < (usDataOffset +
34912 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
34913 {
34914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34915 "Unable to get send buffer in GetFrameLog Req");
34916 WDI_ASSERT(0);
34917 return WDI_STATUS_E_FAILURE;
34918 }
34919
34920 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
34921 wdiRssiMonitorStartReq->requestId;
34922
34923 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
34924 wdiRssiMonitorStartReq->minRssi;
34925
34926 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
34927 wdiRssiMonitorStartReq->maxRssi;
34928 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
34929 &(wdiRssiMonitorStartReq->currentBssId),
34930 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
34931
34932 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
34933
34934 wpalMemoryCopy(pSendBuffer+usDataOffset,
34935 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
34936 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
34937
34938 /*-------------------------------------------------------------------------
34939 Send Suspend Request to HAL
34940 ------------------------------------------------------------------------*/
34941 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34942 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
34943
34944 return wdiStatus;
34945}
34946
34947
34948/**
34949 @brief Process FWLoggingInit Request
34950
34951 @param pWDICtx: pointer to the WLAN DAL context
34952 pEventData: pointer to the event information structure
34953
34954 @see
34955 @return Result of the function call
34956*/
34957WDI_Status
34958WDI_ProcessRssiMonitorStopReq
34959(
34960 WDI_ControlBlockType* pWDICtx,
34961 WDI_EventInfoType* pEventData
34962)
34963{
34964 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
34965 wpt_uint8* pSendBuffer = NULL;
34966 wpt_uint16 usDataOffset = 0;
34967 wpt_uint16 usSendSize = 0;
34968 WDI_Status wdiStatus;
34969 tHalStopRssimonitoringReq halStopRssiMonitorReq;
34970 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
34971
34972
34973 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34974 "%s: %d Enter",__func__, __LINE__);
34975
34976 /*-------------------------------------------------------------------------
34977 Sanity check
34978 ------------------------------------------------------------------------*/
34979 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34980 ( NULL == pEventData->pEventData))
34981 {
34982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34983 "%s: Invalid parameters", __func__);
34984 WDI_ASSERT(0);
34985 return WDI_STATUS_E_FAILURE;
34986 }
34987 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34988
34989 /*-----------------------------------------------------------------------
34990 Get message buffer
34991 -----------------------------------------------------------------------*/
34992 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34993 WDI_STOP_RSSI_MONITOR_REQ,
34994 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
34995 &pSendBuffer, &usDataOffset, &usSendSize))||
34996 (usSendSize < (usDataOffset +
34997 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
34998 {
34999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35000 "Unable to get send buffer in GetFrameLog Req");
35001 WDI_ASSERT(0);
35002 return WDI_STATUS_E_FAILURE;
35003 }
35004
35005 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
35006 wdiRssiMonitorStopReq->requestId;
35007
35008 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
35009 &(wdiRssiMonitorStopReq->currentBssId),
35010 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
35011
35012 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
35013
35014 wpalMemoryCopy(pSendBuffer+usDataOffset,
35015 &halStopRssiMonitorReq.stopRssiMonitoringParams,
35016 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
35017
35018 /*-------------------------------------------------------------------------
35019 Send Suspend Request to HAL
35020 ------------------------------------------------------------------------*/
35021 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35022 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
35023
35024 return wdiStatus;
35025}
35026
35027/**
35028 @brief Process MgmtFrame Logging Init Rsp function
35029 (called when a response is being received over the bus from HAL)
35030
35031 @param pWDICtx: pointer to the WLAN DAL context
35032 pEventData: pointer to the event information structure
35033
35034 @see
35035 @return Result of the function call
35036*/
35037WDI_Status
35038WDI_ProcessRssiMonitorStopRsp
35039(
35040 WDI_ControlBlockType* pWDICtx,
35041 WDI_EventInfoType* pEventData
35042)
35043{
35044 tHalStopRssimonitoringRspParams halRsp;
35045 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
35046 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
35047
35048 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35049 "%s: %d Enter",__func__, __LINE__);
35050
35051 /*-------------------------------------------------------------------------
35052 Sanity check
35053 -------------------------------------------------------------------------*/
35054 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35055 ( NULL == pEventData->pEventData))
35056 {
35057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35058 "%s: Invalid parameters", __func__);
35059 WDI_ASSERT(0);
35060 return WDI_STATUS_E_FAILURE;
35061 }
35062 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35063
35064 /*-------------------------------------------------------------------------
35065 Extract response and send it to UMAC
35066 -------------------------------------------------------------------------*/
35067 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35068
35069 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35070
35071 /*Notify UMAC*/
35072 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
35073
35074 return WDI_STATUS_SUCCESS;
35075}
35076
35077
35078/**
35079 @brief Process MgmtFrame Logging Init Rsp function
35080 (called when a response is being received over the bus from HAL)
35081
35082 @param pWDICtx: pointer to the WLAN DAL context
35083 pEventData: pointer to the event information structure
35084
35085 @see
35086 @return Result of the function call
35087*/
35088WDI_Status
35089WDI_ProcessRssiMonitorStartRsp
35090(
35091 WDI_ControlBlockType* pWDICtx,
35092 WDI_EventInfoType* pEventData
35093)
35094{
35095 tHalStartRssimonitoringRspParams halRsp;
35096 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
35097 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
35098
35099 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35100 "%s: %d Enter",__func__, __LINE__);
35101
35102 /*-------------------------------------------------------------------------
35103 Sanity check
35104 -------------------------------------------------------------------------*/
35105 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35106 ( NULL == pEventData->pEventData))
35107 {
35108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35109 "%s: Invalid parameters", __func__);
35110 WDI_ASSERT(0);
35111 return WDI_STATUS_E_FAILURE;
35112 }
35113 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35114
35115 /*-------------------------------------------------------------------------
35116 Extract response and send it to UMAC
35117 -------------------------------------------------------------------------*/
35118 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35119
35120 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35121
35122 /*Notify UMAC*/
35123 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
35124
35125 return WDI_STATUS_SUCCESS;
35126}
35127
Siddharth Bhal64246172015-02-27 01:04:37 +053035128/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035129 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053035130
35131 @param pWDICtx: pointer to the WLAN DAL context
35132 pEventData: pointer to the event information structure
35133
35134 @see
35135 @return Result of the function call
35136*/
35137WDI_Status
35138WDI_ProcessGetFrameLogReq
35139(
35140 WDI_ControlBlockType* pWDICtx,
35141 WDI_EventInfoType* pEventData
35142)
35143{
35144 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
35145 wpt_uint8* pSendBuffer = NULL;
35146 wpt_uint16 usDataOffset = 0;
35147 wpt_uint16 usSendSize = 0;
35148 WDI_Status wdiStatus;
35149 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035150 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053035151
35152
35153 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35154 "%s: %d Enter",__func__, __LINE__);
35155
35156 /*-------------------------------------------------------------------------
35157 Sanity check
35158 ------------------------------------------------------------------------*/
35159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35160 ( NULL == pEventData->pEventData))
35161 {
35162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35163 "%s: Invalid parameters", __func__);
35164 WDI_ASSERT(0);
35165 return WDI_STATUS_E_FAILURE;
35166 }
35167
35168 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
35169
35170 /*-----------------------------------------------------------------------
35171 Get message buffer
35172 -----------------------------------------------------------------------*/
35173 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35174 WDI_GET_FRAME_LOG_REQ,
35175 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
35176 &pSendBuffer, &usDataOffset, &usSendSize))||
35177 (usSendSize < (usDataOffset +
35178 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
35179 {
35180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35181 "Unable to get send buffer in GetFrameLog Req");
35182 WDI_ASSERT(0);
35183 return WDI_STATUS_E_FAILURE;
35184 }
35185
35186 halGetFrameLogReq.tGetFrameLogReqParams.flags =
35187 wdiGetFrameLogReq->flags;
35188
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035189 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053035190
35191 wpalMemoryCopy( pSendBuffer+usDataOffset,
35192 &halGetFrameLogReq.tGetFrameLogReqParams,
35193 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
35194
35195 /*-------------------------------------------------------------------------
35196 Send Suspend Request to HAL
35197 ------------------------------------------------------------------------*/
35198 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35199 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
35200
35201 return wdiStatus;
35202}
35203/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035204 @brief Process MgmtFrame Logging Init Rsp function
35205 (called when a response is being received over the bus from HAL)
35206
35207 @param pWDICtx: pointer to the WLAN DAL context
35208 pEventData: pointer to the event information structure
35209
35210 @see
35211 @return Result of the function call
35212*/
35213WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035214WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035215(
35216 WDI_ControlBlockType* pWDICtx,
35217 WDI_EventInfoType* pEventData
35218)
35219{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035220 tFWLoggingInitResp halRsp;
35221 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
35222 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035223
35224 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35225 "%s: %d Enter",__func__, __LINE__);
35226
35227 /*-------------------------------------------------------------------------
35228 Sanity check
35229 -------------------------------------------------------------------------*/
35230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35231 ( NULL == pEventData->pEventData))
35232 {
35233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35234 "%s: Invalid parameters", __func__);
35235 WDI_ASSERT(0);
35236 return WDI_STATUS_E_FAILURE;
35237 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035238 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035239
35240 /*-------------------------------------------------------------------------
35241 Extract response and send it to UMAC
35242 -------------------------------------------------------------------------*/
35243 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35244
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035245 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053035246 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035247
35248 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035249 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035250
35251 return WDI_STATUS_SUCCESS;
35252}
35253
c_manjeecfd1efb2015-09-25 19:32:34 +053035254/**
35255 @brief Process Fwr Mem Dump Rsp function
35256 (called when a response is being received over the bus from HAL)
35257
35258 @param pWDICtx: pointer to the WLAN DAL context
35259 pEventData: pointer to the event information structure
35260
35261 @see
35262 @return Result of the function call
35263*/
35264WDI_Status
35265 WDI_ProcessFwrMemDumpRsp
35266
35267(
35268 WDI_ControlBlockType* pWDICtx,
35269 WDI_EventInfoType* pEventData
35270)
35271{
35272 tHalFwMemoryDumpRespMsg halRsp;
35273 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35274 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
35275
35276 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35277 "%s: %d Enter",__func__, __LINE__);
35278
35279 /*-------------------------------------------------------------------------
35280 Sanity check
35281 -------------------------------------------------------------------------*/
35282 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35283 ( NULL == pEventData->pEventData))
35284 {
35285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35286 "%s: Invalid parameters", __func__);
35287 WDI_ASSERT(0);
35288 return WDI_STATUS_E_FAILURE;
35289 }
35290 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
35291
35292 /*-------------------------------------------------------------------------
35293 Extract response and send it to UMAC
35294 -------------------------------------------------------------------------*/
c_manjee107ae7a2015-11-13 22:28:50 +053035295 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp.tFwMemoryDumpResp));
c_manjeecfd1efb2015-09-25 19:32:34 +053035296
35297 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
35298
35299 /*Notify UMAC*/
35300 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
35301
35302 return WDI_STATUS_SUCCESS;
35303}
35304
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035305WDI_Status
35306WDI_ProcessFWLoggingDXEdoneInd
35307(
35308 WDI_ControlBlockType* pWDICtx,
35309 WDI_EventInfoType* pEventData
35310)
35311{
35312 wpt_uint8* pSendBuffer = NULL;
35313 wpt_uint16 usDataOffset = 0;
35314 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035315 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053035316 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035317 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035318 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035319
35320
35321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35322
35323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35324 "%s", __func__);
35325
35326 /*-------------------------------------------------------------------------
35327 Sanity check
35328 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035329 if (NULL == pEventData ||
35330 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035331 {
35332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35333 "%s: Invalid parameters", __func__);
35334 WDI_ASSERT(0);
35335 return WDI_STATUS_E_FAILURE;
35336 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035337 pLogType = (wpt_uint32 *)pEventData->pEventData;
35338
Mihir Shete5affadc2015-05-29 20:54:57 +053035339 pLoggingSession = (WDI_DS_LoggingSessionType *)
35340 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
35341 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035342 /*-----------------------------------------------------------------------
35343 Get message buffer
35344 -----------------------------------------------------------------------*/
35345
35346 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35347 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053035348 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035349 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053035350 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035351 {
35352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35353 "Unable to get send buffer in RTS CTS ind %p ",
35354 pEventData);
35355 WDI_ASSERT(0);
35356 return WDI_STATUS_E_FAILURE;
35357 }
35358 FWLoggingDxeDoneIndParams =
35359 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
35360
35361 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053035362 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035363 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053035364
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053035365 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035366 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053035367
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035368 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053035369 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035370 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
35371
35372 pWDICtx->pReqStatusUserData = NULL;
35373 pWDICtx->pfncRspCB = NULL;
35374 /*-------------------------------------------------------------------------
35375 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
35376 -------------------------------------------------------------------------*/
35377 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35378 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35379}
35380
Sachin Ahuja715aafc2015-07-21 23:35:10 +053035381
35382/**
35383 @brief Process Fatal Event Logs Rsp function
35384 (called when a response is being received over the bus from HAL)
35385
35386 @param pWDICtx: pointer to the WLAN DAL context
35387 pEventData: pointer to the event information structure
35388
35389 @see
35390 @return Result of the function call
35391*/
35392WDI_Status
35393WDI_ProcessFatalEventLogsRsp
35394(
35395 WDI_ControlBlockType* pWDICtx,
35396 WDI_EventInfoType* pEventData
35397)
35398{
35399 tHalFatalEventLoggingRspParams halRsp;
35400 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35401 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
35402
35403 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35404 "%s: %d Enter",__func__, __LINE__);
35405
35406 /*-------------------------------------------------------------------------
35407 Sanity check
35408 -------------------------------------------------------------------------*/
35409 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35410 ( NULL == pEventData->pEventData))
35411 {
35412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35413 "%s: Invalid parameters", __func__);
35414 WDI_ASSERT(0);
35415 return WDI_STATUS_E_FAILURE;
35416 }
35417 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
35418
35419 /*-------------------------------------------------------------------------
35420 Extract response and send it to UMAC
35421 -------------------------------------------------------------------------*/
35422 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35423
35424 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
35425
35426 /*Notify UMAC*/
35427 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
35428 pWDICtx->pRspCBUserData);
35429
35430 return WDI_STATUS_SUCCESS;
35431}
35432
35433/**
35434 @brief Process FatalEventLogs Request
35435
35436 @param pWDICtx: pointer to the WLAN DAL context
35437 pEventData: pointer to the event information structure
35438
35439 @see
35440 @return Result of the function call
35441*/
35442
35443WDI_Status
35444WDI_ProcessFatalEventLogsReq
35445
35446(
35447 WDI_ControlBlockType* pWDICtx,
35448 WDI_EventInfoType* pEventData
35449)
35450{
35451 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
35452 wpt_uint8* pSendBuffer = NULL;
35453 wpt_uint16 usDataOffset = 0;
35454 wpt_uint16 usSendSize = 0;
35455 WDI_Status wdiStatus;
35456 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
35457 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35458
35459
35460 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35461 "%s: %d Enter",__func__, __LINE__);
35462
35463 /*-------------------------------------------------------------------------
35464 Sanity check
35465 ------------------------------------------------------------------------*/
35466 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35467 ( NULL == pEventData->pEventData))
35468 {
35469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35470 "%s: Invalid parameters", __func__);
35471 WDI_ASSERT(0);
35472 return WDI_STATUS_E_FAILURE;
35473 }
35474 wdiFatalEventLogsReq =
35475 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
35476
35477 /*-----------------------------------------------------------------------
35478 Get message buffer
35479 -----------------------------------------------------------------------*/
35480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35481 WDI_FATAL_EVENT_LOGGING_REQ,
35482 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
35483 &pSendBuffer, &usDataOffset, &usSendSize))||
35484 (usSendSize < (usDataOffset +
35485 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
35486 {
35487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35488 "Unable to get send buffer in Fatal Event Req");
35489 WDI_ASSERT(0);
35490 return WDI_STATUS_E_FAILURE;
35491 }
35492 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
35493 wdiFatalEventLogsReq->reason_code;
35494
35495 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
35496
35497 wpalMemoryCopy( pSendBuffer+usDataOffset,
35498 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
35499 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
35500
35501 /*-------------------------------------------------------------------------
35502 Send Mgmt Logging Init Request to HAL
35503 ------------------------------------------------------------------------*/
35504 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35505 wdiFatalEventLogsRspCb, pEventData->pUserData,
35506 WDI_FATAL_EVENT_LOGGING_RSP);
35507
35508 return wdiStatus;
35509
35510
35511}
35512
35513
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035514/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035515 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035516
35517 @param pWDICtx: pointer to the WLAN DAL context
35518 pEventData: pointer to the event information structure
35519
35520 @see
35521 @return Result of the function call
35522*/
35523WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035524WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035525(
35526 WDI_ControlBlockType* pWDICtx,
35527 WDI_EventInfoType* pEventData
35528)
35529{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035530 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035531 wpt_uint8* pSendBuffer = NULL;
35532 wpt_uint16 usDataOffset = 0;
35533 wpt_uint16 usSendSize = 0;
35534 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035535 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
35536 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035537
35538
35539 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35540 "%s: %d Enter",__func__, __LINE__);
35541
35542 /*-------------------------------------------------------------------------
35543 Sanity check
35544 ------------------------------------------------------------------------*/
35545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35546 ( NULL == pEventData->pEventData))
35547 {
35548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35549 "%s: Invalid parameters", __func__);
35550 WDI_ASSERT(0);
35551 return WDI_STATUS_E_FAILURE;
35552 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035553 wdiFWLoggingInitReq =
35554 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035555
35556 /*-----------------------------------------------------------------------
35557 Get message buffer
35558 -----------------------------------------------------------------------*/
35559 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035560 WDI_FW_LOGGING_INIT_REQ,
35561 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035562 &pSendBuffer, &usDataOffset, &usSendSize))||
35563 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035564 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035565 {
35566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35567 "Unable to get send buffer in Process Mgmt Logging Init Req");
35568 WDI_ASSERT(0);
35569 return WDI_STATUS_E_FAILURE;
35570 }
35571
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035572 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
35573 wdiFWLoggingInitReq->enableFlag;
35574 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
35575 wdiFWLoggingInitReq->frameSize;
35576 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
35577 wdiFWLoggingInitReq->frameType;
35578 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
35579 wdiFWLoggingInitReq->bufferMode;
35580 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
35581 wdiFWLoggingInitReq->continuousFrameLogging;
35582 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
35583 wdiFWLoggingInitReq->minLogBufferSize;
35584 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
35585 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053035586 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
35587 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
35588 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
35589 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035590
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035591 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035592
35593 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035594 &halFWLoggingInitReq.tFWLoggingInitReqParams,
35595 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035596
35597 /*-------------------------------------------------------------------------
35598 Send Mgmt Logging Init Request to HAL
35599 ------------------------------------------------------------------------*/
35600 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035601 wdiFWLoggingInitRspCb, pEventData->pUserData,
35602 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035603
35604 return wdiStatus;
35605}
35606
35607/**
c_manjeecfd1efb2015-09-25 19:32:34 +053035608 @brief Process FwrMemDumpReq Request
35609
35610 @param pWDICtx: pointer to the WLAN DAL context
35611 pEventData: pointer to the event information structure
35612
35613 @see
35614 @return Result of the function call
35615*/
35616WDI_Status
35617 WDI_ProcessFwrMemDumpReq
35618
35619(
35620 WDI_ControlBlockType* pWDICtx,
35621 WDI_EventInfoType* pEventData
35622)
35623{
35624 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
35625 wpt_uint8* pSendBuffer = NULL;
35626 wpt_uint16 usDataOffset = 0;
35627 wpt_uint16 usSendSize = 0;
35628 WDI_Status wdiStatus;
35629 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
35630 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35631
35632 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35633 "%s: %d Enter",__func__, __LINE__);
35634
35635 /*-------------------------------------------------------------------------
35636 Sanity check
35637 ------------------------------------------------------------------------*/
35638 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35639 ( NULL == pEventData->pEventData))
35640 {
35641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35642 "%s: Invalid parameters", __func__);
35643 WDI_ASSERT(0);
35644 return WDI_STATUS_E_FAILURE;
35645 }
35646
35647 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
35648
35649 /*-----------------------------------------------------------------------
35650 Get message buffer
35651 -----------------------------------------------------------------------*/
35652 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35653 WDI_FWR_MEM_DUMP_REQ,
35654 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
35655 &pSendBuffer, &usDataOffset, &usSendSize))||
35656 (usSendSize < (usDataOffset +
35657 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
35658 {
35659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35660 "Unable to get send buffer in Process Fwr Mem Dump Req");
35661 WDI_ASSERT(0);
35662 return WDI_STATUS_E_FAILURE;
35663 }
35664
35665 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
35666 wpalMemoryCopy( pSendBuffer+usDataOffset,
35667 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
35668 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
35669
35670 /*-------------------------------------------------------------------------
35671 Send Fwr Mem Dump Request to HAL
35672 ------------------------------------------------------------------------*/
35673 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35674 wdiFwrMemDumpRspCb, pEventData->pUserData,
35675 WDI_FWR_MEM_DUMP_RSP);
35676 return wdiStatus;
35677}
35678
35679/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053035680 @brief WDI_EncryptMsgReq
35681
35682 @param pwdiEncryptMsgParams: Req parameter for the FW
35683 wdiEncryptMsgCbRsp: callback for passing back the response
35684 of the Req operation received from the device
35685 pUserData: user data will be passed back with the callback
35686
35687 @return SUCCESS or FAIL
35688*/
35689WDI_Status
35690WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
35691 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
35692 void* pUserData)
35693{
35694 WDI_EventInfoType wdiEventData;
35695
35696 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35697 "%s: %d Enter" ,__func__, __LINE__);
35698 /*------------------------------------------------------------------------
35699 Sanity Check
35700 ------------------------------------------------------------------------*/
35701 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35702 {
35703 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35704 "WDI API call before module is initialized - Fail request");
35705
35706 return WDI_STATUS_E_NOT_ALLOWED;
35707 }
35708
35709 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
35710 wdiEventData.pEventData = pwdiEncryptMsgParams;
35711 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
35712 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
35713 wdiEventData.pUserData = pUserData;
35714
35715 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35716}
35717
35718/*
35719 * FUNCTION: WDI_ProcessEncryptMsgReq
35720 * Request to WDI to encrypt the given message.
35721 *
35722 * @param pWDICtx: pointer to the WLAN DAL context
35723 * pEventData: pointer to the event information structure
35724 *
35725 * @return Result of the function call
35726 */
35727
35728WDI_Status
35729WDI_ProcessEncryptMsgReq
35730(
35731 WDI_ControlBlockType* pWDICtx,
35732 WDI_EventInfoType* pEventData
35733)
35734{
35735 wpt_uint8* pSendBuffer = NULL;
35736 wpt_uint16 usDataOffset = 0;
35737 wpt_uint16 usSendSize = 0;
35738 WDI_EncryptMsgRspCb* wdiEncMsgCb;
35739 tSetEncryptedDataParams *pHalEncryptDataReq;
35740 wpt_pkt80211 *pkt = NULL;
35741
35742 /*-------------------------------------------------------------------------
35743 Sanity check
35744 -------------------------------------------------------------------------*/
35745 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
35746 ( NULL == pEventData->pCBfnc ) )
35747 {
35748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35749 "%s: Invalid parameters", __func__);
35750 WDI_ASSERT(0);
35751 return WDI_STATUS_E_FAILURE;
35752 }
35753
35754 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
35755
35756 /*-----------------------------------------------------------------------
35757 Get message buffer
35758 -----------------------------------------------------------------------*/
35759 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35760 pWDICtx, WDI_ENCRYPT_MSG_REQ,
35761 sizeof(tSetEncryptedDataReqMsg),
35762 &pSendBuffer, &usDataOffset, &usSendSize)) ||
35763 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
35764 {
35765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35766 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
35767 pEventData);
35768 WDI_ASSERT(0);
35769 return WDI_STATUS_E_FAILURE;
35770 }
35771
35772 pWDICtx->wdiReqStatusCB = NULL;
35773 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35774 pkt = (wpt_pkt80211 *)pEventData->pEventData;
35775
35776 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
35777 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
35778
35779 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
35780
35781 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
35782 pkt->encParams.keyParams.key[0].keyId;
35783
35784 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
35785 &pkt->encParams.keyParams.key[0].key[0], 16);
35786
35787 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
35788
35789 pHalEncryptDataReq->data.length = pkt->data.length;
35790 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
35791
35792 /*-------------------------------------------------------------------------
35793 Send Get STA Request to HAL
35794 -------------------------------------------------------------------------*/
35795 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
35796 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
35797}
35798
35799/*
35800 * FUNCTION: WDI_ProcessEncryptMsgRsp
35801 * Receives the encrypted message from the firmware
35802 * @param pWDICtx: pointer to the WLAN DAL context
35803 * pEventData: pointer to the event information structure
35804 *
35805 * @return Result of the function call
35806 */
35807WDI_Status
35808WDI_ProcessEncryptMsgRsp
35809(
35810 WDI_ControlBlockType* pWDICtx,
35811 WDI_EventInfoType* pEventData
35812)
35813{
35814 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
35815 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
35816
35817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35818 "In %s",__func__);
35819
35820 /*-------------------------------------------------------------------------
35821 Sanity check
35822 -------------------------------------------------------------------------*/
35823 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35824 ( NULL == pEventData->pEventData))
35825 {
35826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35827 "%s: Invalid parameters", __func__);
35828 WDI_ASSERT(0);
35829 return WDI_STATUS_E_FAILURE;
35830 }
35831
35832 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35833
35834 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35835
35836 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35837 pEventData->pEventData,
35838 pWDICtx->pRspCBUserData);
35839 return WDI_STATUS_SUCCESS;
35840}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035841
35842WDI_Status
35843WDI_NanRequest
35844(
35845 WDI_NanRequestType *pwdiNanRequest,
35846 void *usrData
35847)
35848{
35849 WDI_EventInfoType wdiEventData;
35850
35851 /*------------------------------------------------------------------------
35852 Sanity Check
35853 ------------------------------------------------------------------------*/
35854 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35855 {
35856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35857 "WDI API call before module is initialized - Fail request");
35858
35859 return WDI_STATUS_E_NOT_ALLOWED;
35860 }
35861
35862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35863 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35864 pwdiNanRequest->request_data_len);
35865
35866 /*------------------------------------------------------------------------
35867 Fill in Event data and post to the Main FSM
35868 ------------------------------------------------------------------------*/
35869 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35870 wdiEventData.pEventData = pwdiNanRequest;
35871 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35872 + pwdiNanRequest->request_data_len;
35873 wdiEventData.pUserData = usrData;
35874 wdiEventData.pCBfnc = NULL;
35875
35876
35877 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35878}
35879
35880WDI_Status
35881WDI_ProcessNanRequest
35882(
35883 WDI_ControlBlockType* pWDICtx,
35884 WDI_EventInfoType* pEventData
35885)
35886{
35887 WDI_NanRequestType *pwdiNanRequest = NULL;
35888 wpt_uint8* pSendBuffer = NULL;
35889 wpt_uint16 usDataOffset = 0;
35890 wpt_uint16 usSendSize = 0;
35891
35892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35893 "WDI_ProcessNanRequest");
35894
35895 /*-------------------------------------------------------------------------
35896 Sanity check
35897 -------------------------------------------------------------------------*/
35898 if (( NULL == pEventData ) ||
35899 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35900 {
35901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35902 "%s: Invalid parameters", __FUNCTION__);
35903 WDI_ASSERT(0);
35904 return WDI_STATUS_E_FAILURE;
35905 }
35906
35907 /*-----------------------------------------------------------------------
35908 Get message buffer
35909 -----------------------------------------------------------------------*/
35910 if (( WDI_STATUS_SUCCESS
35911 != WDI_GetMessageBuffer( pWDICtx,
35912 WDI_NAN_REQUEST,
35913 pwdiNanRequest->request_data_len,
35914 &pSendBuffer,
35915 &usDataOffset,
35916 &usSendSize))||
35917 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35918 {
35919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35920 "Unable to get send buffer in NAN request %p %p",
35921 pEventData, pwdiNanRequest);
35922 WDI_ASSERT(0);
35923 return WDI_STATUS_E_FAILURE;
35924 }
35925
35926 wpalMemoryCopy( pSendBuffer+usDataOffset,
35927 pwdiNanRequest->request_data,
35928 pwdiNanRequest->request_data_len);
35929
35930 pWDICtx->pReqStatusUserData = NULL;
35931 pWDICtx->pfncRspCB = NULL;
35932 vos_mem_free( pEventData->pUserData);
35933
35934 /*-------------------------------------------------------------------------
35935 Send NAN Request to HAL
35936 -------------------------------------------------------------------------*/
35937 return WDI_SendMsg( pWDICtx,
35938 pSendBuffer,
35939 usSendSize,
35940 NULL,
35941 NULL,
35942 WDI_NAN_RESPONSE);
35943}
35944
35945/**
35946 @brief Process NAN Response function (called when a
35947 response is being received over the bus from HAL)
35948
35949 @param pWDICtx: pointer to the WLAN DAL context
35950 pEventData: pointer to the event information structure
35951
35952 @see
35953 @return Result of the function call
35954*/
35955WDI_Status
35956WDI_ProcessNanResponse
35957(
35958 WDI_ControlBlockType* pWDICtx,
35959 WDI_EventInfoType* pEventData
35960)
35961{
35962 WDI_Status wdiStatus;
35963 eHalStatus halStatus;
35964
35965 /*-------------------------------------------------------------------------
35966 Sanity check
35967 -------------------------------------------------------------------------*/
35968 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35969 ( NULL == pEventData->pEventData))
35970 {
35971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35972 "%s: Invalid parameters", __func__);
35973 WDI_ASSERT(0);
35974 return WDI_STATUS_E_FAILURE;
35975 }
35976
35977 halStatus = *((eHalStatus*)pEventData->pEventData);
35978 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
35979
35980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35981 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
35982
35983 return WDI_STATUS_SUCCESS;
35984}/*WDI_ProcessNanResponse*/
35985
35986
35987/**
35988 @brief Process NAN Event function (called when
35989 an indication is being received over the
35990 bus from HAL)
35991
35992 @param pWDICtx: pointer to the WLAN DAL context
35993 pEventData: pointer to the event information structure
35994
35995 @see
35996 @return Result of the function call
35997*/
35998WDI_Status
35999WDI_ProcessNanEvent
36000(
36001 WDI_ControlBlockType* pWDICtx,
36002 WDI_EventInfoType* pEventData
36003)
36004{
36005 WDI_LowLevelIndType wdiInd;
36006
36007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36008
36009 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36010 ( NULL == pEventData->pEventData ))
36011 {
36012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36013 "%s: Invalid parameters", __func__);
36014 WDI_ASSERT( 0 );
36015 return WDI_STATUS_E_FAILURE;
36016 }
36017
36018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36019 "%s: Received NAN event", __func__);
36020 /*-------------------------------------------------------------------------
36021 Extract indication and send it to UMAC
36022 -------------------------------------------------------------------------*/
36023 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
36024 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
36025 pEventData->uEventDataSize;
36026 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
36027 pEventData->pEventData;
36028
36029 /*Notify UMAC*/
36030 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36031
36032 return WDI_STATUS_SUCCESS;
36033}/*WDI_ProcessNanEvent*/
36034
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036035
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036036WDI_Status
36037WDI_Process_RssiBreachedInd
36038(
36039 WDI_ControlBlockType* pWDICtx,
36040 WDI_EventInfoType* pEventData
36041)
36042{
36043 WDI_LowLevelIndType wdiInd;
36044 tHalRssiMonitorIndParams halRssiBreachedInd;
36045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36046
36047 /*-------------------------------------------------------------------------
36048 Sanity check
36049 -------------------------------------------------------------------------*/
36050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36051 ( NULL == pEventData->pEventData))
36052 {
36053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36054 "%s: Invalid parameters", __func__);
36055 WDI_ASSERT(0);
36056 return WDI_STATUS_E_FAILURE;
36057 }
36058
36059 /*-------------------------------------------------------------------------
36060 Extract indication and send it to UMAC
36061 -------------------------------------------------------------------------*/
36062 wpalMemoryCopy( &halRssiBreachedInd,
36063 pEventData->pEventData,
36064 sizeof(halRssiBreachedInd));
36065
36066
36067 /*Fill in the indication parameters*/
36068 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
36069 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiRssiBreachedInd,
36070 (void *)&halRssiBreachedInd,
36071 sizeof(WDI_RssiBreachedIndType));
36072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36073 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
36074 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
36075 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
36076 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
36077 /*Notify UMAC*/
36078 if (pWDICtx->wdiLowLevelIndCB)
36079 {
36080 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36081 }
36082
36083 return WDI_STATUS_SUCCESS;
36084
36085}
36086
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036087
36088WDI_Status
36089WDI_Process_LostLinkParamInd
36090(
36091 WDI_ControlBlockType* pWDICtx,
36092 WDI_EventInfoType* pEventData
36093)
36094{
36095 WDI_LowLevelIndType wdiInd;
36096 tHalLostLinkParametersIndParams halLostLinkParamInd;
36097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36098
36099 /*-------------------------------------------------------------------------
36100 Sanity check
36101 -------------------------------------------------------------------------*/
36102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36103 ( NULL == pEventData->pEventData))
36104 {
36105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36106 "%s: Invalid parameters", __func__);
36107 WDI_ASSERT(0);
36108 return WDI_STATUS_E_FAILURE;
36109 }
36110
36111 /*-------------------------------------------------------------------------
36112 Extract indication and send it to UMAC
36113 -------------------------------------------------------------------------*/
36114 wpalMemoryCopy( (void *)&halLostLinkParamInd,
36115 pEventData->pEventData,
36116 sizeof(tHalLostLinkParametersIndParams));
36117
36118
36119 /*Fill in the indication parameters*/
36120 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
36121 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
36122 (void *)&halLostLinkParamInd,
36123 sizeof(WDI_LostLinkParamsIndType));
36124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36125 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
36126 "linkFlTx : %d,lastDataRate : %d", __func__,
36127 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
36128 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
36129 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
36130 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
36131 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
36132 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
36133 /*Notify UMAC*/
36134 if (pWDICtx->wdiLowLevelIndCB)
36135 {
36136 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36137 }
36138
36139 return WDI_STATUS_SUCCESS;
36140
36141}
36142
Abhishek Singh41988ba2015-05-25 19:42:29 +053036143WDI_Status
36144WDI_ProcessSetRtsCtsHtvhtInd
36145(
36146 WDI_ControlBlockType* pWDICtx,
36147 WDI_EventInfoType* pEventData
36148)
36149{
36150 wpt_uint8* pSendBuffer = NULL;
36151 wpt_uint16 usDataOffset = 0;
36152 wpt_uint16 usSendSize = 0;
36153 wpt_uint32 *rtsCtsVal;
36154 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
36155 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36156
36157
36158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36159
36160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36161 "%s", __func__);
36162
36163 /*-------------------------------------------------------------------------
36164 Sanity check
36165 -------------------------------------------------------------------------*/
36166 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36167 {
36168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36169 "%s: Invalid parameters", __func__);
36170 WDI_ASSERT(0);
36171 return WDI_STATUS_E_FAILURE;
36172 }
36173 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
36174 /*-----------------------------------------------------------------------
36175 Get message buffer
36176 -----------------------------------------------------------------------*/
36177
36178 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36179 WDI_SET_RTS_CTS_HTVHT_IND,
36180 sizeof(tHalRtsCtsHtvhtIndParams),
36181 &pSendBuffer, &usDataOffset, &usSendSize))||
36182 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
36183 {
36184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36185 "Unable to get send buffer in RTS CTS ind %p ",
36186 pEventData);
36187 WDI_ASSERT(0);
36188 return WDI_STATUS_E_FAILURE;
36189 }
36190 rtsCtsHtvhtIndParams =
36191 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
36192 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
36193
36194 pWDICtx->pReqStatusUserData = NULL;
36195 pWDICtx->pfncRspCB = NULL;
36196 /*-------------------------------------------------------------------------
36197 Send SET_RTS_CTS_HTVHT Indication to HAL
36198 -------------------------------------------------------------------------*/
36199 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36200 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36201}
36202
36203WDI_Status
36204WDI_SetRtsCtsHTVhtInd
36205(
36206 wpt_uint32 rtsCtsVal
36207)
36208{
36209 WDI_EventInfoType wdiEventData;
36210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36211
36212 /*------------------------------------------------------------------------
36213 Sanity Check
36214 ------------------------------------------------------------------------*/
36215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36216 {
36217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36218 "WDI API call before module is initialized - Fail request");
36219 return WDI_STATUS_E_NOT_ALLOWED;
36220 }
36221
36222 /*------------------------------------------------------------------------
36223 Fill in Event data and post to the Main FSM
36224 ------------------------------------------------------------------------*/
36225 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
36226 wdiEventData.pEventData = (void *) &rtsCtsVal;
36227 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36228 wdiEventData.pCBfnc = NULL;
36229 wdiEventData.pUserData = NULL;
36230
36231 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36232
36233}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053036234
36235WDI_Status
36236WDI_ProcessEnableDisableCAEventInd
36237(
36238 WDI_ControlBlockType* pWDICtx,
36239 WDI_EventInfoType* pEventData
36240)
36241{
36242 wpt_uint8* pSendBuffer = NULL;
36243 wpt_uint16 usDataOffset = 0;
36244 wpt_uint16 usSendSize = 0;
36245 wpt_uint32 *val;
36246 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
36247 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36248
36249
36250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36251
36252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36253 "%s", __func__);
36254
36255 /*-------------------------------------------------------------------------
36256 Sanity check
36257 -------------------------------------------------------------------------*/
36258 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36259 {
36260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36261 "%s: Invalid parameters", __func__);
36262 WDI_ASSERT(0);
36263 return WDI_STATUS_E_FAILURE;
36264 }
36265 val = (wpt_uint32*)pEventData->pEventData;
36266 /*-----------------------------------------------------------------------
36267 Get message buffer
36268 -----------------------------------------------------------------------*/
36269
36270 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36271 WDI_SEND_FREQ_RANGE_CONTROL_IND,
36272 sizeof(tHalAvoidFreqRangeCtrlParam),
36273 &pSendBuffer, &usDataOffset, &usSendSize))||
36274 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
36275 {
36276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36277 "Unable to get send buffer in Channel Avoidance Ind %p ",
36278 pEventData);
36279 WDI_ASSERT(0);
36280 return WDI_STATUS_E_FAILURE;
36281 }
36282 avoidFreqRangeCtrlParam =
36283 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
36284 avoidFreqRangeCtrlParam->status = *val;
36285
36286 pWDICtx->pReqStatusUserData = NULL;
36287 pWDICtx->pfncRspCB = NULL;
36288 /*-------------------------------------------------------------------------
36289 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
36290 -------------------------------------------------------------------------*/
36291 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36292 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36293}
36294
36295WDI_Status
36296WDI_EnableDisableCAEventInd
36297(
36298 wpt_uint32 val
36299)
36300{
36301 WDI_EventInfoType wdiEventData;
36302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36303
36304 /*------------------------------------------------------------------------
36305 Sanity Check
36306 ------------------------------------------------------------------------*/
36307 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36308 {
36309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36310 "WDI API call before module is initialized - Fail request");
36311 return WDI_STATUS_E_NOT_ALLOWED;
36312 }
36313
36314 /*------------------------------------------------------------------------
36315 Fill in Event data and post to the Main FSM
36316 ------------------------------------------------------------------------*/
36317 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
36318 wdiEventData.pEventData = (void *) &val;
36319 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36320 wdiEventData.pCBfnc = NULL;
36321 wdiEventData.pUserData = NULL;
36322
36323 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36324
36325} /* WDI_EnableDisableCAEventInd */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053036326
36327/**
36328 @brief WDI_WifiConfigSetReq
36329 This API is called to set WifiConfig params request in FW
36330
36331 @param pwdiWifiConfigSetReqParams : pointer to set WifiCofig request params
36332 wdiWifiConfigSetRspCb : WifiConfig stats resp callback
36333 usrData : Client context
36334 @see
36335 @return SUCCESS or FAIL
36336*/
36337WDI_Status
36338WDI_WifiConfigSetReq(WDI_WifiConfigSetReqType* pwdiWifConfigSetReqParams,
36339 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb,
36340 void* pUserData)
36341{
36342 WDI_EventInfoType wdiEventData;
36343
36344 /*------------------------------------------------------------------------
36345 Sanity Check
36346 ------------------------------------------------------------------------*/
36347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36348 {
36349 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36350 "WDI API call before module is initialized - Fail request");
36351
36352 return WDI_STATUS_E_NOT_ALLOWED;
36353 }
36354
36355 wdiEventData.wdiRequest = WDI_WIFI_CONFIG_SET_REQ;
36356 wdiEventData.pEventData = pwdiWifConfigSetReqParams;
36357 wdiEventData.uEventDataSize = sizeof(*pwdiWifConfigSetReqParams);
36358 wdiEventData.pCBfnc = wdiWifiConfigSetRspCb;
36359 wdiEventData.pUserData = pUserData;
36360
36361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36362}
36363
36364/**
36365 @brief WDI_ProcessWifiConfigReq -
36366 Set WifiConfig request to FW
36367
36368 @param pWDICtx : wdi context
36369 pEventData : indication data
36370
36371 @see
36372 @return none
36373*/
36374 WDI_Status
36375 WDI_ProcessWifiConfigReq
36376 (
36377 WDI_ControlBlockType* pWDICtx,
36378 WDI_EventInfoType* pEventData
36379 )
36380 {
36381 WDI_WifiConfigSetReqType* pwdiWifiConfigSetReqParams;
36382 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36383 wpt_uint8* pSendBuffer = NULL;
36384 wpt_uint16 usSendSize = 0;
36385 wpt_uint16 usDataOffset = 0;
36386 tSetWifiConfigParamsReq halWifiConfigSetParams;
36387
36388 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
36389 ( NULL == pEventData->pCBfnc ))
36390 {
36391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36392 "%s: Invalid parameters", __func__);
36393 WDI_ASSERT(0);
36394 return WDI_STATUS_E_FAILURE;
36395 }
36396 pwdiWifiConfigSetReqParams = (WDI_WifiConfigSetReqType*)pEventData->pEventData;
36397 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pEventData->pCBfnc;
36398
36399 /*-----------------------------------------------------------------------
36400 Get message buffer
36401 ! TO DO : proper conversion into the HAL Message Request Format
36402 -----------------------------------------------------------------------*/
36403 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36404 pWDICtx,
36405 WDI_WIFI_CONFIG_SET_REQ,
36406 sizeof(halWifiConfigSetParams.wifiConfigParams),
36407 &pSendBuffer, &usDataOffset,
36408 &usSendSize))||
36409 ( usSendSize < (usDataOffset + sizeof(halWifiConfigSetParams.wifiConfigParams) )))
36410 {
36411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36412 "Unable to get send buffer in %s %p %p %p", __func__,
36413 pEventData, pwdiWifiConfigSetReqParams, wdiWifiConfigSetRspCb);
36414 WDI_ASSERT(0);
36415 return WDI_STATUS_E_FAILURE;
36416 }
36417
36418 halWifiConfigSetParams.wifiConfigParams.paramType = pwdiWifiConfigSetReqParams->paramType;
36419 halWifiConfigSetParams.wifiConfigParams.paramValue =
36420 pwdiWifiConfigSetReqParams->paramValue;
36421 vos_mem_copy(halWifiConfigSetParams.wifiConfigParams.bssid, &(pwdiWifiConfigSetReqParams->bssId),
36422 sizeof(tSirMacAddr));
36423
36424 wpalMemoryCopy(pSendBuffer+usDataOffset,
36425 &halWifiConfigSetParams.wifiConfigParams,
36426 sizeof(halWifiConfigSetParams.wifiConfigParams));
36427
36428 pWDICtx->pReqStatusUserData = pEventData->pUserData;
36429
36430 /*-------------------------------------------------------------------------
36431 Send Clear Link Layer Stats Request to HAL
36432 -------------------------------------------------------------------------*/
36433 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36434 wdiWifiConfigSetRspCb, pEventData->pUserData,
36435 WDI_WIFI_CONFIG_SET_RSP);
36436 }
36437
36438WDI_Status
36439WDI_ProcessWificonfigSetRsp
36440( WDI_ControlBlockType* pWDICtx,
36441 WDI_EventInfoType* pEventData )
36442
36443{
36444 tHalSetWifiConfigRspParams halRsp;
36445 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36446 WDI_WifconfigSetRsp wdiWifconfigSetRsp;
36447
36448 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36449 "%s: %d Enter",__func__, __LINE__);
36450
36451 /*-------------------------------------------------------------------------
36452 Sanity check
36453 -------------------------------------------------------------------------*/
36454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36455 ( NULL == pEventData->pEventData))
36456 {
36457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36458 "%s: Invalid parameters", __func__);
36459 WDI_ASSERT(0);
36460 return WDI_STATUS_E_FAILURE;
36461 }
36462 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pWDICtx->pfncRspCB;
36463
36464 /*-------------------------------------------------------------------------
36465 Extract response and send it to UMAC
36466 -------------------------------------------------------------------------*/
36467 wpalMemoryCopy(&halRsp, pEventData->pEventData, sizeof(halRsp));
36468
36469 wdiWifconfigSetRsp.wificonfigset_status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36470
36471 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36472 "WifiConfig RSP status = %d",
36473 wdiWifconfigSetRsp.wificonfigset_status);
36474 /*Notify UMAC*/
36475 wdiWifiConfigSetRspCb( &wdiWifconfigSetRsp, pWDICtx->pRspCBUserData);
36476
36477 return WDI_STATUS_SUCCESS;
36478}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036479
36480#ifdef FEATURE_OEM_DATA_SUPPORT
36481
36482/**
36483 @brief WDI_StartOemDataReqIndNew
36484
36485 @param pOemDataReqNewConfig: Req parameter for the FW
36486
36487 @return SUCCESS or FAIL
36488*/
36489WDI_Status
36490WDI_StartOemDataReqIndNew
36491(
36492 WDI_OemDataReqNewConfig *pOemDataReqNewConfig
36493)
36494{
36495 WDI_EventInfoType wdiEventData;
36496
36497 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36498 "%s: %d",__func__, __LINE__);
36499 /*------------------------------------------------------------------------
36500 Sanity Check
36501 ------------------------------------------------------------------------*/
36502 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36503 {
36504 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36505 "WDI API call before module is initialized - Fail request");
36506
36507 return WDI_STATUS_E_NOT_ALLOWED;
36508 }
36509
36510 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ_IND_NEW;
36511 wdiEventData.pEventData = pOemDataReqNewConfig;
36512 wdiEventData.uEventDataSize = sizeof(*pOemDataReqNewConfig);
36513 wdiEventData.pCBfnc = NULL;
36514 wdiEventData.pUserData = NULL;
36515
36516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36517}
36518
36519/**
36520 @brief WDI_ProcessStartOemDataReqIndNew -
36521 Send OEM Data request new indication to FW
36522
36523 @param pWDICtx : wdi context
36524 pEventData : indication data
36525
36526 @see
36527 @return none
36528*/
36529WDI_Status
36530WDI_ProcessStartOemDataReqIndNew
36531(
36532 WDI_ControlBlockType* pWDICtx,
36533 WDI_EventInfoType* pEventData
36534)
36535{
36536 WDI_OemDataReqNewConfig* wdiOemDataReqNewConfig;
36537 wpt_uint8* pSendBuffer = NULL;
36538 wpt_uint16 usSendSize = 0;
36539 wpt_uint16 usDataOffset = 0;
36540 tpStartOemDataReqParamsNew pHalStartOemDataReqParamsNew;
36541 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36542
36543 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36544 "%s: %d",__func__, __LINE__);
36545
36546 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36547 ( NULL == pEventData->pEventData))
36548 {
36549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36550 "%s: Invalid parameters", __func__);
36551 WDI_ASSERT(0);
36552 return WDI_STATUS_E_FAILURE;
36553 }
36554
36555 wdiOemDataReqNewConfig =
36556 (WDI_OemDataReqNewConfig *)pEventData->pEventData;
36557
36558 /*-----------------------------------------------------------------------
36559 Get message buffer
36560 -----------------------------------------------------------------------*/
36561 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36562 pWDICtx,
36563 WDI_START_OEM_DATA_REQ_IND_NEW,
36564 sizeof(tStartOemDataReqParamsNew),
36565 &pSendBuffer, &usDataOffset,
36566 &usSendSize))||
36567 ( usSendSize < (usDataOffset + sizeof(tStartOemDataReqParamsNew) )))
36568 {
36569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36570 "Unable to get send buffer in %s %p %p", __func__,
36571 pEventData, wdiOemDataReqNewConfig);
36572 WDI_ASSERT(0);
36573 return WDI_STATUS_E_FAILURE;
36574 }
36575 pHalStartOemDataReqParamsNew =
36576 (tpStartOemDataReqParamsNew) (pSendBuffer+usDataOffset);
36577
36578 wpalMemoryCopy(pHalStartOemDataReqParamsNew, wdiOemDataReqNewConfig, NEW_OEM_DATA_REQ_SIZE);
36579
36580
36581 pWDICtx->pReqStatusUserData = NULL;
36582 pWDICtx->pfncRspCB = NULL;
36583
36584 /*-------------------------------------------------------------------------
36585 Send WDI_START_OEM_DATA_REQ_IND_NEW Request to HAL
36586 -------------------------------------------------------------------------*/
36587 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36588 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36589}
36590
36591/**
36592 @brief Process OemDataRsp New Indication indication from FW
36593
36594 @param pWDICtx: pointer to the WLAN DAL context
36595 pEventData: pointer to the event information structure
36596
36597 @see
36598 @return Result of the function call
36599*/
36600WDI_Status
36601WDI_ProcessStartOemDataRspIndNew
36602(
36603 WDI_ControlBlockType* pWDICtx,
36604 WDI_EventInfoType* pEventData
36605)
36606{
36607 WDI_LowLevelIndType wdiInd;
36608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36609
36610 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36611 "%s: ", __func__);
36612
36613 /* sanity check */
36614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36615 ( NULL == pEventData->pEventData))
36616 {
36617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36618 "%s: Invalid parameters", __func__);
36619 WDI_ASSERT(0);
36620 return WDI_STATUS_E_FAILURE;
36621 }
36622
36623 /* Fill in the indication parameters */
36624 wdiInd.wdiIndicationType = WDI_START_OEM_DATA_RSP_IND_NEW;
36625
36626 /* extract response and send it to UMAC */
36627 wdiInd.wdiIndicationData.pOemRspNewIndData = (void *)pEventData->pEventData;
36628
36629 /* Notify UMAC */
36630 if (pWDICtx->wdiLowLevelIndCB)
36631 {
36632 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36633 }
36634 else
36635 {
36636 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36637 "%s: WDILowLevelIndCb is null", __func__);
36638 WDI_ASSERT(0);
36639 return WDI_STATUS_E_FAILURE;
36640 }
36641 return WDI_STATUS_SUCCESS;
36642} /* End of WDI_ProcessEXTScanResultInd */
36643
36644#endif